PS/Baekjoon Online Judge

[백준 14442] 벽 부수고 이동하기 2 [Java]

kimyoungrok 2023. 7. 15. 21:00

백준 14442 - 문제
백준 14442 - 입/출력


풀이

 

[백준 2206] 벽 부수고 이동하기 [Java]

풀이 (0, 0)에서 (N - 1, M - 1)까지 최대 벽을 1개 부수며 도착할 수 있는 최단거리를 구하면 되는 문제다. 하나의 2차원 배열에 최단거리를 기록하기에는 어느 순간 벽을 부술때와 부수지 않는 경우

kyr-db.tistory.com

위 문제의 확장 버전이다.

벽을 최대 K개 부수며 이동할 수 있다.

 

이전 로직에서 탐색 중 벽이 아닌 부분을 만났을 때 처리하는 부분을 0 또는 1이 아니라,

지금까지 부순 횟수(smash) + 1로 변경해 처리해주자.

그리고 마찬가지로, 벽을 0 ~ 10개 부순 경우에 대한 이동경로를 기록해야 하니 2개가 아닌, K+1개로 아래처럼 

공간을 할당해 주자.


소스코드

소스코드 보기


출처

 

14442번: 벽 부수고 이동하기 2

첫째 줄에 N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 1,000), K(1 ≤ K ≤ 10)이 주어진다. 다음 N개의 줄에 M개의 숫자로 맵이 주어진다. (1, 1)과 (N, M)은 항상 0이라고 가정하자.

www.acmicpc.net