문제 링크
https://www.acmicpc.net/problem/1107
풀이
현재 채널인 $100$번에서 +, - 버튼으로만 $N$번 채널까지 이동한다면 $abs(N-100)$번 버튼을 눌러야 합니다. 이를 +, - 버튼을 누르는 횟수의 상한으로 잡는다면 숫자를 통해 이동할 수 있는 채널의 범위를 찾아낼 수 있고 $[N-abs(N-100), N+abs(N+100)]$, 이 범위의 길이는 최대 $2N$이므로 충분히 범위안의 채널을 모두 탐색해도 시간내에 돌 수 있습니다. 누르는 숫자 버튼의 개수와 +, -버튼을 통해 이동하는 횟수를 모두 구해 그 중 최솟값을 정답으로 출력하면 됩니다. 누를 수 없는 채널과 0번 채널로 이동하는 경우를 유의하며 구현해야 합니다. 시간복잡도는 탐색하는 채널의 개수인 $O(N)$입니다.
전체 코드
1 |
|