2178 - 미로 탐색(bfs)
실버1 문제이다. 문제:N, M 크기의 미로가 주어진다. 미로에서 1은 지나갈 수 있는 곳이고, 0은 막힌 곳이다.(1, 1)에서 출발하여 (N, M)의 위치로 이동할 때 지나야 하는 최소의 칸 수를 구하시오 풀이:미로를 이동하는 방법은 무었일까? 당연하게도 지나갈 수 있는 길로 계속해서 이동하는 것이다.그렇다면 최소 거리를 구하는 방법은 무엇일까? 다음 과정을 살펴보자. 1. 시작 위치는 (1,1)이다.2. 시작위치에서 갈 수 있는 위치는 (2, 1) (1, 2)이다. 둘다 한칸만 이동하면 된다.3. 이후 (1, 2)에서 이동 할 수 있는 위치는 (2, 2)이다.4. (2, 1)에서 이동 가능한 위치는 (2, 2), (3,1) 이며, 이중 (2, 2)는 이동할 필요가 없다. 이미 (1,1)에서..
2024. 7. 22.
1303번 - 4방향 탐색(dfs)
문제:위의 입력과 같이 주어진다.가로, 세로가 N, M으로 주어진다.다음 M개 줄에 B와 W가 적혀져 있으며, N개가 뭉쳐있을 때는 N^2의 위력을 낼 수 있다.W와 B의 위력을 알아내라. 풀이:어떤 문자가 모여있는 것은 해당 문자 주변을 탐색해서 찾아내야 할 것이다.고로 아래와 같은 과정으로 생각해보았다. 현재 위치에서 4방향(상, 하, 좌, 우)으로 이동하면서 같은 문자(B 또는 W)를 찾는다.이동할 수 있는 방향으로 이동해 다시 4방향(상, 하, 좌, 우)를 둘러본다. 다시 돌아가지 않기 위해 들렸던 위치에는 흔적을 남긴다.더이상 이동 할 수 없다면, (해당 구역의 합)^2을 저장한다.이렇게 생각해보니까 dfs()를 사용하고 있다는 것을 눈치챘다.가능한 한 깊이 있는 노드를 먼저 탐색하고, 더 이상..
2024. 7. 20.