백준 2206 - 벽 부수고 이동하기(C++)
문제 N•M의 행렬로 표현되는 맵이 주어진다. 맵은 0과 1로 이루어져 있으며 '0'은 이동할 수 있는 곳 '1'은 벽을 의미한다. (0, 0)부터 시작하여 (N-1, M-1)의 위치까지 이동하는 최단 거리를 구해야 한다. 이때 상하좌우로 이동할 수 있으며, 벽은 한 개까지 부수며 이동할 수 있다. 입력 첫째 줄에 N과 M이 주어진다. (1 ≤ N ≤ 1,000) (1 ≤ M ≤ 1,000) 다음 줄에는 N개의 줄에 M개의 숫자가 주어진다. 예제 입력 6 4 0100 1110 1000 0000 0111 0000 예제 출력 15 문제 해결 어디서 힌트를 얻을 수 있을까? '행렬', '최단 경로'를 통해 이 문제가 BFS를 이용하여 문제를 풀 수 있다는 것을 알 수 있다. 우선 최단 경로란 한 번 방문한 노..
알고리즘/문제
2023. 5. 25. 23:14