[BOJ 15944] 성공
View as PDF
Submit solution
Points:
4
Time limit:
2.0s
Memory limit:
512M
Problem types
Allowed languages
Assembly, Awk, C, C++, Java, Pascal, Perl, Python, Sed, Text
당연한 이야기지만, 성공으로 가는 길이 항상 평탄하지만은 않다. 온갖 장애물이 가득하고, 장애물에 막혀서 주저앉을 수도 있다. 그래서 그 장애물을 폭파하려고 한다.</p>
성공으로 가는 길은 N×M격자 위에 놓여 있다. 성공으로 가려면 맨 왼쪽 위 칸에서 시작하여 장애물이 없는 상하좌우로 인접한 칸을 밟으면서 맨 오른쪽 아래 칸에 도착해야 한다. 한 번의 폭파 작업으로 D×D 격자 내에 있는 모든 장애물을 없앨 수 있다. 하지만 세상에 공짜는 없는 법. 폭파 작업에도 큰 힘이 들기 때문에, 성공으로 가려면 최소 몇 번의 폭파 작업이 필요한지 알고 싶다.
입력 형식
첫 번째 줄에 격자의 행의 개수 N, 열의 개수 M, 폭파의 범위 D가 주어진다(D ≤ N, M ≤ 500, 1 ≤ D ≤ 100).</p>
그 다음 N개의 줄에 격자의 각 행을 나타내는 길이 M의 문자열이 주어진다. “.”은 장애물이 없는 칸, “#”은 장애물이 있는 칸이다. 출발 지점과 성공에는 장애물이 없다.
출력 형식
첫 번째 줄에 폭파 작업의 최소 횟수를 출력한다.
예제 입력
8 9 3
.########
##.....##
######.##
####...##
####.####
#########
####.####
########.
예제 출력
2
힌트

Comments