정답률 26.811%여서 깜짝 놀랬었는데, 다행히 생각보다는 괜찮았네요.
이동 횟수를 기준으로, '얼마나 많은 거리를 이동할 수 있는가'를 정리해봤습니다.
규칙이 보이는 홀수먼저 잡아보면,
최대 이동거리가 k * k꼴임을 확인할 수 있습니다.
짝수의 경우, 줄어들때도 1씩 줄어야 하는 조건 때문에
홀수 경우에서 가운데 부분만 빼면 최대 이동거리를 구할 수 있습니다.
그리고 최대 이동거리는 k * k - k꼴이네요.
이를 이용해 주어진 두 지점의 이동거리를 D라고 했을 때
1. D == k * k
2. 그 외
2-1. (k - 1) * (k - 1) - (k - 1) < D
2-2. (k - 1) * (k - 1) - (k - 1) >= D
위와 같은 로직으로 해결했습니다.
아래는 코드입니다.
'백준 알고리즘(Java)' 카테고리의 다른 글
2775번) 부녀회장이 될테야 (0) | 2018.08.01 |
---|---|
10250번) ACM 호텔 (0) | 2018.08.01 |
1924번) 2007년 (0) | 2018.07.30 |
1193번) 분수찾기 (0) | 2018.07.29 |
2292번) 벌집 (0) | 2018.07.29 |