본문 바로가기

백준 알고리즘(Java)

1101번) Fly me to the Alpha Centauri

정답률 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