-
[Algorithm] 백준 2589 보물섬 - C++, BFS쾌락없는 책임 (공부)/알고리즘 문제풀이 2022. 4. 25. 21:50반응형
#include <iostream> #include <algorithm> #include <queue> using namespace std; int col, row; char map[51][51]; bool visit[51][51]; int moveX[] = { 0, 0, 1, -1 }; int moveY[] = { 1, -1, 0, 0 }; void InitVisit(){ for(int i = 0; i < col; i++){ for(int j = 0; j < row; j++){ visit[i][j] = false; } } } bool IsOut(int y, int x){ if(y < 0 || x < 0 || y >= col || x >= row) return true; return false; } int SearchMaxdistance(int startY, int startX){ InitVisit(); queue<pair<int, pair<int, int>>> q; q.push({0, {startY, startX}}); visit[startY][startX] = true; int res = 0; while(!q.empty()){ int curY = q.front().second.first; int curX = q.front().second.second; int curCount = q.front().first; q.pop(); res = max(res, curCount); for(int i = 0; i < 4; i++){ int nextY = curY + moveY[i]; int nextX = curX + moveX[i]; if(IsOut(nextY, nextX)) continue; if(visit[nextY][nextX]) continue; if(map[nextY][nextX] == 'W') continue; q.push({curCount+1, {nextY, nextX}}); visit[nextY][nextX] = true; } } return res; } int main(){ // init ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); // input cin >> col >> row; for(int i = 0; i < col; i++){ for(int j = 0; j < row; j++){ cin >> map[i][j]; } } // search int maxDistance = 0; for(int i = 0; i < col; i++){ for(int j = 0; j < row; j++){ if(map[i][j] == 'L'){ maxDistance = max(maxDistance, SearchMaxdistance(i, j)); } } } // print cout << maxDistance << '\n'; }
브루트포스로 각 육지 지점마다 BFS 를 해서 거리를 구해주면 되는 문제였습니다.
반응형'쾌락없는 책임 (공부) > 알고리즘 문제풀이' 카테고리의 다른 글
[Algorithm] 16928 뱀과 사다리 게임 - C++, BFS (0) 2022.05.05 [Algorithm] 프로그래머스 합승 택시 요금 - C++, 플로이드 와샬 (0) 2022.05.03 [Algorithm] 백준 1504 특정한 최단 경로 - C++, 다익스트라 (0) 2022.04.18 [Algorithm] 백준 2665 미로 만들기 - C++ ,BFS (0) 2022.04.17 [Algorithm] 백준 1620 나는야 포켓몬 마스터 이다솜 - C++, map (0) 2022.04.15