교수님들이 쓰시는 표현을 빌리면,
나에게 너무 challenging하다..
방문 체크 배열을 3차원으로 만들어야 하는 것이 특히 그렇다.
1. 문제 분석
https://www.acmicpc.net/problem/14442
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
미로를 탐색하며 (0, 0)에서 (N-1, M-1)까지의 최단 경로를 찾아야 한다.
이때 부술수 있는 벽의 최대 개수만 지키면 되고 적게 벽을 부수든, 많이 부수든 관계 없다.
따라서 각 위치를 탐색하며 (0, 0)으로부터의 거리를 저장하거나 방문 체크를 할 때에
몇개의 벽을 부수며 왔는지 경우를 나누어 저장해야하는 것이다.
즉, 거리 저장용 배열 dist와 방문 체크용 배열 visited가 미로 2차원 + 부순 벽의 개수 1차원 = 3차원이 되어야한다.
2. 코드
'백준' 카테고리의 다른 글
[C++] 2293 동전1 | DP(Dynamic Programming) (0) | 2023.09.16 |
---|---|
[C++] 2512 예산 | 이진탐색(Binary Search) (0) | 2023.09.04 |
[C++] 2660 회장뽑기 | 그래프(Graph) (0) | 2023.09.03 |
여름방학 백준 스터디 후기 + 완벽주의 대한 생각 정리 (0) | 2023.09.03 |
[C++] 11000번 강의실 배정 - 문제 해결 Point (0) | 2023.08.07 |