Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- @observedobject 프로퍼티 래퍼
- 동기 함수 내에서 비동기 함수 호출
- featured-sliced-design
- 페이지전환
- navigationBar 숨기기
- 리렌더링최적화
- zustand
- react상태관리라이브러리
- 반응형 css
- CSS
- BFS
- @environmentobject 프로퍼티 래퍼
- 블로그업로드확인
- react fsd
- react hook
- react modal
- 비동기함수
- zustand란
- 세로모드끄기
- C++
- react-router-dom
- 리액트최적화
- 페이지이동함수
- LazyVGrid
- 가로모드끄기
- GridItem
- @published 프로퍼티 래퍼
- 컴퓨터네트워크
- LazyHGrid
- modal 관리
Archives
- Today
- Total
leebaek
[BOJ/2589번보물섬] c++ / BFS 본문
문제
섬 안에서의 가장 먼 거리를 최단시간에 이동하는데 걸린 시간을 구하는 문제
-L이 섬(땅), W가 바다
-땅만 이동 가능
-한번 이동하는데 1시간 걸림
생각
처음에 보물이 숨겨졌다길래 대체 어디있는건가 고민했는데, 문제 읽어보니 그냥 가장 멀리 떨어진 두 지점 사이의 최단 거리를 구하는 거였음
* 런타임 에러 떴는데, 문자열을 잘못 입력 받은 것 같음 / 사실 뭐가 문제인지 모르겠음
문제풀이
1.vis 초기화 ( -1로 )
2.L이 나오면 BFS 탐색
3.기준 땅의 상하좌우에 방문하지 않은 땅이 있다면, 방문 표시 + 큐에 푸쉬 ( 기준칸 cnt + 1 )
4.cnt 값 반환
5.cnt값 비교해서 max 구하기
6.max 출력
코드
#include <iostream>
#include <algorithm>
#include <queue>
#include <cstring>
using namespace std;
#define X first
#define Y second
int dx[4] = {0, 0, -1, 1};
int dy[4] = {1, -1, 0, 0};
int N, M, m=0;
string board[51];
int vis[51][51];
int BFS(int x, int y) {
memset(vis, -1, sizeof(vis));
queue<pair<int, int>> Q;
int cnt = 0;
vis[x][y] = 0;
Q.push({x, y});
while(!Q.empty()) {
pair<int, int> cur = Q.front(); Q.pop();
for ( int dir = 0 ; dir < 4; dir++ ) {
int nx = cur.X + dx[dir];
int ny = cur.Y + dy[dir];
if ( nx < 0 || nx >= N || ny < 0 || ny >= M ) continue;
if ( board[nx][ny] == 'W' || vis[nx][ny] > -1 ) continue;
vis[nx][ny] = vis[cur.X][cur.Y] + 1;
cnt = vis[cur.X][cur.Y] + 1;
Q.push({nx, ny});
}
}
return cnt;
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> N >> M;
for ( int i = 0; i < N; i++ )
cin >> board[i];
for ( int i = 0; i < N; i++ ) {
for ( int j = 0; j < M; j++ ) {
if ( board[i][j] == 'L' ) {
m = max(BFS(i, j), m);
}
}
}
cout << m;
}
'BOJ_C++_PS' 카테고리의 다른 글
[BOJ/2512번예산] c++ / 이진탐색 (0) | 2023.10.17 |
---|---|
[BOJ/16928번뱀과사다리게임] c++ / BFS (1) | 2023.10.16 |
[BOJ/13549번숨바꼭질3] c++ / BFS (1) | 2023.10.14 |
[BOJ/14940번쉬운최단거리] c++ / BFS (0) | 2023.10.13 |
[BOJ/11060번점프점프] c++ / BFS (0) | 2023.10.12 |