알고리즘/BFS & DFS(3)
-
백준 20005번: 보스몬스터 전리품 (C++)
https://www.acmicpc.net/problem/20005 20005번: 보스몬스터 전리품 입력의 첫째 줄에는 멤멤월드의 지도의 크기를 나타내는 두 정수 M(6 ≤ M ≤ 1000), N(6 ≤ N ≤ 1000)과 플레이어의 수 P(1 ≤ P ≤ 26)가 주어진다. M은 지도의 세로 길이, N은 지도의 가로 길이이다. 입 www.acmicpc.net 풀이 최소로 보스몬스터에 접근해야하는 거리를 알아야하기 때문에 BFS 를 사용했다. 전체 map 을 탐색하면서 소문자 알파벳이 있을 경우 BFS 를 돌려주었는데 방문 체크를 하기 위해 visited 배열을 3차원으로 선언했고 보스몬스터에 접근하게 되면 도착시간을 alpha 배열에 넣어주고 BFS 를 종료시켰다. 그리고 HP = N) return fa..
2023.02.22 -
백준 16928번: 뱀과 사다리 게임 (C++)
https://www.acmicpc.net/problem/16928 16928번: 뱀과 사다리 게임 첫째 줄에 게임판에 있는 사다리의 수 N(1 ≤ N ≤ 15)과 뱀의 수 M(1 ≤ M ≤ 15)이 주어진다. 둘째 줄부터 N개의 줄에는 사다리의 정보를 의미하는 x, y (x < y)가 주어진다. x번 칸에 도착하면, y번 칸으 www.acmicpc.net 풀이 완전탐색인거 같은데 재방문할 필요가 없고 최소 거리를 구해야 하기 때문에 BFS를 이용했다. 뱀과 사다리에 접근했을 때 pair를 이용하면 전체 탐색을 해야할 것 같아서 map을 이용해 뱀 혹은 사다리에 키 값이 존재하면 바로 이동지점으로 갈 수 있게 했다. 다음 위치가 100 이상이면 탐색하지 않고 100일 때 방문 횟수를 체크하고 BFS를 종..
2023.02.17 -
백준 3187번: 양치기 꿍 (C++)
https://www.acmicpc.net/problem/3187 3187번: 양치기 꿍 입력의 첫 번째 줄에는 각각 영역의 세로와 가로의 길이를 나타내는 두 개의 정수 R, C (3 ≤ R, C ≤ 250)가 주어진다. 다음 각 R줄에는 C개의 문자가 주어지며 이들은 위에서 설명한 기호들이다. www.acmicpc.net 풀이 울타리 안의 양과 늑대 마리 수를 비교하는 게 중요한 문제. BFS, DFS 어떤 것으로 풀어도 상관 없는데 난 BFS로 풀었다. (앞으로는 구현하기 쉬운 DFS로 풀어야지) 양이 있는 곳을 찾아 그 부분에서 탐색을 진행했다. goY[4] 와 goX[4] 배열을 만들어서 4 방향으로 뻗어나가는 방식으로 진행했고 마을을 벗어나거나 울타리인 경우, 그리고 방문한 경우는 다음 방향을 ..
2023.01.31