최대한 d, l, r, u 순으로 배치하면 되는 문제이니 d,l 방향으로 먼저 향한 후 r,u 방향으로 움직여 도착점에 들어가면 됩니다.
방문하는 위치를 순서대로 생각하면 (n,y), (n,1), (r,c)로 움직인다고 생각하면 됩니다.
이 순서대로 움직이다가 k가 모자라면 멈춰서 바로 도착점으로 향하고, (n,1)에 도착했는데도 k가 남으면 'rl' 이동을 반복하면 됩니다. 'ud' 보다 'rl'이 사전 순으로 더 빠르기 때문입니다.
정답 코드는 아래 링크에 있습니다.
https://github.com/Juniork725/coding_test/blob/main/%EB%82%9C%EC%9D%B4%EB%8F%843/%EB%AF%B8%EB%A1%9C%20%ED%83%88%EC%B6%9C%20%EB%AA%85%EB%A0%B9%EC%96%B4.md
덕분에 문제를 풀 수 있었습니다. 제 기준에서는 아주 나이스한 코드였습니다. 감사합니당
질문이 있습니다. (n,1)까지 이동한 후에, 다시 (r,c)로 갔는데도 값이 남으면, 'du'가 사전 순으로 제일 빠르지 않나요?
ㄴ (n, 1)에서 (r, c)로 이동할 수 있는 최소한의 걸음수를 남겨두고 rl 이동을 반복하기 때문에 (r, c)에서는 k가 남을 수 없습니다.
호호 배워갑니다!
수행시간 산정방식이 다른건지 모르겠는데 Python 이 빠른 결과를 보여주는 사례들이 있어서 이것도 그런 것 같네요.
C# 혹은 특히 Java 는 초기 실행환경 loading 시간이 있는지 꽤 느리더라고요.