본문 바로가기
반응형

BFS32

백준 1194번 달이 차오른다, 가자. - C++ 풀이 1. 열쇠 소지 현황을 비트 마스크 keys로 나타낸다. 2. (r, c) 위치에서 keys 열쇠들을 가지고 있는 상황은 {r, c, keys}로 나타낼 수 있다. 3. BFS로 탈출 상황까지 가는 최단 이동 횟수를 구한다. 1. 열쇠 소지 현황을 비트마스크 keys로 나타낸다. BFS에서 방문 여부를 배열로 기록하기 쉽게 하기 위해서 열쇠 소지 현황을 비트 마스크를 이용해서 나타내 준다. 2. (r, c) 위치에서 keys 열쇠들을 가지고 있는 상황은 {r, c, keys}로 나타낼 수 있다. 어떠한 상황을 나타내는 데 필요한 값은 위치와 열쇠 소지 현황이다. (r, c) 위치에서 비트 마스크로 나타낸 keys 열쇠들을 가지고 있는 상황은 {r, c, keys}로 나타낼 수 있다. 3. BFS로 탈출 .. 2022. 6. 15.
백준 2573번 빙산 - C++ 풀이 1. 빙산 덩어리의 개수는 그래프의 연결 요소 개수이므로 DFS/BFS 호출 횟수와 같다. 2. 모든 빙산 칸에 대해 주변의 0의 개수만큼 높이를 줄여주고, 빙산덩어리의 개수를 센다. 3. 빙산 덩어리의 개수가 2개 이상이 될 때까지 2번 과정을 반복한다. 1. 빙산덩어리의 개수는 그래프의 연결 요소 개수이므로 DFS/BFS 호출 횟수와 같다. 서로 연결되어 있는 빙산칸은 하나의 덩어리이므로, 빙산 덩어리의 개수는 그래프의 연결 요소 개수와 같다. 따라서 빙산 덩어리 개수는 모든 빙산칸을 방문하기까지 호출한 DFS/BFS의 횟수와 같다. 2. 모든 빙산 칸에 대해 주변의 0의 개수만큼 높이를 줄여주고, 빙산 덩어리의 개수를 센다. 빙산이 녹는 과정을 시뮬레이션 해준 뒤, 빙산 덩어리의 개수를 세준다. 이.. 2022. 6. 2.
백준 2468번 안전 영역 - C++(cpp) 풀이 1. 물에 잠기지 않은 지역을 정점으로 생각하고 상하좌우로 인접한 정점을 간선으로 이었을 때, 그래프의 연결 요소가 곧 안전 영역이다. 2. 그래프의 연결 요소 개수는 모든 정점을 방문하기 위해 호출해야 하는 DFS/BFS 횟수와 같다. 3. 가능한 모든 높이에 대해 해당 높이만큼 물이 찼을 때 안전영역의 개수를 센 뒤, 최댓값을 찾는다. 1. 물에 잠기지 않은 지역을 정점으로 생각하고 상하좌우로 인접한 정점을 간선으로 이었을 때, 그래프의 연결 요소가 곧 안전 영역이다. 주어진 상황을 그래프로 바꾸어 생각할 수 있다. 물에 잠기지 않은 지역을 정점으로 생각하고, 상하좌우로 인접한 정점들을 간선으로 이었을 때, 안전 영역은 그래프의 연결 요소와 같다. 2. 그래프의 연결 요소 개수는 모든 정점을 방문하기.. 2022. 5. 8.
백준 4963번 섬의 개수 - C++(cpp) 풀이 1. 땅인 칸을 정점으로 생각하고, 가로, 세로, 대각선으로 이어져있는 땅들을 간선으로 잇는다. 2. 하나의 섬은 그래프의 연결 요소 하나와 대응된다. 3. DFS/BFS를 사용해 그래프의 연결 요소 개수를 센다. 1. 땅인 칸을 정점으로 생각하고, 가로, 세로, 대각선으로 이어져있는 땅들을 간선으로 잇는다. 주어진 상황을 그래프로 바꾸어 생각할 수 있다. 땅인 칸을 정점으로, 이어져있는 땅들을 간선으로 이으면 그래프가 된다. 2. 하나의 섬은 그래프의 연결 요소 하나와 대응된다. 이제 섬은 그래프의 연결 요소와 같다는 것을 알 수 있다. 3. DFS/BFS를 사용해 그래프의 연결 요소 개수를 센다. 따라서 섬의 개수는 곧 그래프의 연결 요소 개수와 같다. 한 번의 DFS/BFS로 하나의 연결 요소에 속.. 2022. 5. 3.
백준 3055번 탈출 - C++(cpp) 풀이 1. 물의 확장을 BFS로 시뮬레이션해서 각 빈칸에 물이 몇 분에 도착하는지 기록한다. 2. 고슴도치의 이동을 BFS로 시뮬레이션한다. 물이 도착하기 전에 이동할 수 있는 곳으로만 계속 이동한다. 3. 2번 과정에서 비버의 굴에 도착하면 그 시간을 출력한다. 1. 물의 확장을 BFS로 시뮬레이션해서 각 빈칸에 물이 몇 분에 도착하는지 기록한다. 물이 매 분 인접한 한 칸으로 확장되므로 너비우선탐색(BFS)로 시뮬레이션 할 수 있다. BFS에서의 depth가 곧 해당 칸에 물이 도착하기까지 걸리는 시간이다. 2. 고슴도치의 이동을 BFS로 시뮬레이션한다. 물이 도착하기 전에 이동할 수 있는 곳으로만 계속 이동한다. 고슴도치도 매 분 인접한 한 칸으로 이동하므로 BFS로 시뮬레이션할 수 있다. 인접한 칸으로.. 2022. 2. 17.
반응형