이번 문제는 백준의 골드 5 문제이다.
문제 이름이 조금 길어서 생략하도록 한다.
이번 문제는 조금 수학적인 문제인 것 같다.
k광년을 매번 이동하는데, 다음 이동은 k-1, k, k+1
위의 세 가지 선택지 중 하나밖에 고르지 못한다.
또한, 처음과 마지막 이동은 반드시 1광년만 이동하도록 한다.
모든 경우의 수
거리 별로 경우의 수들을 한 번 모두 적어보도록 하자.
- 4광년을 가야 하는 경우
1 2 1
을 고르면3
일 만에 갈 수 있다. - 8광년을 가야 하는 경우
1 2 2 2 1
을 고르면5
일 만에 갈 수 있다. - 9광년을 가야 하는 경우
1 2 3 2 1
을 고르면5
일 만에 갈 수 있다. - 11광년을 가야 하는 경우
1 2 3 2 2 1
을 고르면6
일 만에 갈 수 있다. - 12광년을 가야 하는 경우
1 2 3 3 2 1
을 고르면6
일 만에 갈 수 있다. - 16광년을 가야 하는 경우
1 2 3 4 3 2 1
을 고르면7
일 만에 갈 수 있다.
위에 적은 경우들을 잘 살펴보면 특징을 하나 발견할 수 있다.
N^2
의 경우에는 N*2 - 1
일 만에 갈 수 있다는 것이다.
이후로 몇 개의 경우를 더 적어보도록 하자.
- 17광년을 가야 하는 경우
1 2 3 4 3 2 1 1
을 고르면8
일 만에 갈 수 있다. - 18광년을 가야 하는 경우
1 2 3 4 3 2 2 1
을 고르면8
일 만에 갈 수 있다. - 19광년을 가야 하는 경우
1 2 3 4 3 3 2 1
을 고르면8
일 만에 갈 수 있다. - 20광년을 가야 하는 경우
1 2 3 4 4 3 2 1
을 고르면8
일 만에 갈 수 있다. - 21광년을 가야 하는 경우
1 2 3 4 4 3 2 1 1
을 고르면9
일 만에 갈 수 있다.
위의 몇 개의 경우들을 더 살펴보면, 새로운 특징을 발견할 수 있다.
N^2
을 기준으로, N^2
의 경우에는 N*2 - 1
이 된다.
N^2
을 기준으로 더 큰 경우에는, N*2
가 된다.
그리고, N^2 + N
을 기준으로 더 큰 경우에는, N*2 + 1
이 된다.
즉, 우리가 가장 먼저해야 할 일은 거리를 구하는 것.
이후에 해당 거리가 어떤 수의 제곱 수와 가까운 지 찾아야 한다.
최종 구현 코드는 아래와 같다.
역시 이런 수학 문제나, DP
문제들은 모든 경우의 수를
직접 다 적어보는 게 문제를 빨리 푸는 방법인 것 같다.