BOJ 18529 Hopscotch 50
BOJ 18529 Hopscotch 50
문제 내용
의 사각 격자의 각 칸에 1 이상 이하의 정수가 쓰여 있습니다. 당신은 이 격자 위에서 Hopscotch 놀이를 하려고 합니다. Hopscotch는 다음과 같은 과정으로 이루어집니다.
- 먼저 1이 쓰여 있는 칸 중 하나를 밟습니다.
- 현재 밟은 수가 일 때, 이 쓰여 있는 칸 중 하나로 점프합니다. 이를 가 쓰여 있는 칸을 밟을 때까지 반복합니다.
에서 로 점프할 때 필요한 에너지는 입니다. Hopscotch를 하는 방법이 존재한다면, 필요한 에너지의 합의 최솟값을 출력하세요.
입력
첫 번째 줄에 과 가 주어집니다. (, )
다음 줄에 걸쳐서 사각 격자가 주어집니다.
출력
주어진 입력에서 Hopscotch를 할 수 있다면, 필요한 에너지의 합의 최솟값을 출력합니다. 그것이 불가능하다면, -1을 대신 출력합니다.
문제 풀이
스포일러
먼저, 모든 칸들을 그 칸에 쓰여있는 수로 분류합니다. 어떤 수 에 대해 가 쓰여있는 수가 한 개도 없다면 답은 -1입니다.
이제 쓰여있는 수가 증가하는 순서대로 DP를 할 수 있습니다. 칸의 총 개수는 최대 2500개이므로, 모든 가능한 이전 칸으로부터의 거리를 계산하여 DP를 하면 됩니다.
Last updated on