Closed inseonyun closed 2 years ago
문제 요구사항
접근 방법
일반적인 BFS 방식으로 2차원 배열 맵과 check, 경로를 더해나갈 배열 총 3개를 정의하고, 최단 경로를 계산해 나갔다. 그런데 여기서 벽을 부쉈을 때의 경로가 더 짧으면 해당 경로를 택하는 것을 구현해야 하는데, 내가 구현했던 것은 한쪽 방향으로만 한 번 부수고 마는 코드였다.
위와 같은 접근 방법에 문제가 있다는 것을 자각했고, 서치 결과 check 배열과 경로를 더해나가는 배열을 합쳐, 3차원 배열로 생성하여 해결한다. (사실 이전 풀이대로 해도 상관은 없으나 가독성과 코드 단순화를 위해..) 이후, 풀이는 처음 접근하려 했던 방법과 비슷하다.
풀이 순서
[풀이 이미지]
위 맵을 통해 설명하자면 다음과 같다.
아래와 같은 맵에서 값이 2인 곳에서 각각 다시 시작하게 된다. 첫번째 조건을 수행했을 때의 큐 상황도 첨부하였다.
[문제 풀이 결과]
Source URL : https://www.acmicpc.net/problem/2206