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 |
Tags
- 리액트최적화
- BFS
- featured-sliced-design
- @environmentobject 프로퍼티 래퍼
- gitbub desktop
- react modal
- zustand란
- jwt로그아웃
- zustand
- react fsd
- react상태관리라이브러리
- react-quill 경고메세지
- @observedobject 프로퍼티 래퍼
- @published 프로퍼티 래퍼
- 리렌더링최적화
- react-quill
- 페이지이동함수
- git
- C++
- jwt프론트
- react hook
- finddomnode경고
- react-router-dom
- modal 관리
- 동기 함수 내에서 비동기 함수 호출
- 원격저장소 연결
- 비동기함수
- 컴퓨터네트워크
- CSS
- accesstoken 재발급
Archives
- Today
- Total
leebaek
[BOJ/2178번미로탐색] c++ / BFS 본문
문제
첫번째 칸에서 마지막 칸까지 가는 최단 경로의 길이를 구하는 문제
문제해결
bfs를 통해 1이 적힌 칸의 개수를 찾는 것은 쉬웠는데, 최단 경로를 어떤식으로 구해야하는지 감이 안왔음
다른 분이 작성하신 코드를 보고 '아!!!!' 했음
일단, 각 칸에 첫번째 칸부터 해당위치의 칸까지의 길이를 저장할 cnt배열을 만들어야함 (-첫번째 칸은 길이가 1 임)
-(0, 0) 칸의 상하좌우에 길이 있는지 확인
-(1, 0)에 길이 있다면 방문표시 & cnt 배열 (1, 0)에 cnt[0][0]값 + 1 을 넣어줌
-(1, 0)에 길이 있다면 방문표시 & cnt 배열 (0, 1)에 cnt[0][0]값 + 1 을 넣어줌
-마지막 칸에 도착하면 bfs 종료 ( 난 Q가 빌때까지 했음 )
-마지막 칸의 cnt배열 값이 최단 경로의 길이가 됨
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
#define X first
#define Y second
string board[102];
bool vis[102][102];
int cnt[102][102];
int dx[4] = {0, 1, 0, -1};
int dy[4] = {1, 0, -1, 0};
int n, m, ck = 0;
int main(void) {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n >> m;
for ( int i = 0; i < n; i++ )
cin >> board[i]; // 배열 입력
queue<pair<int, int>> Q;
vis[0][0] = 1; // 첫번째 칸 방문표시
cnt[0][0] = 1;
Q.push({0, 0});
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 ( vis[nx][ny] || board[nx][ny] != '1' ) continue;
vis[nx][ny] = 1;
cnt[nx][ny] = cnt[cur.X][cur.Y]+1; // 핵심 부분 !!!!
Q.push({nx, ny});
}
}
cout << cnt[n-1][m-1];
}
'BOJ_C++_PS' 카테고리의 다른 글
[BOJ/11724번연결요소의개수] c++ / BFS (0) | 2023.09.21 |
---|---|
[BOJ/14502번연구소] c++/ BFS (0) | 2023.09.20 |
[BOJ/4179번불!] c++ / BFS (0) | 2023.09.19 |
[BOJ/7576번토마토] c++ / BFS (0) | 2023.09.18 |
[BOJ/1926그림] c++ / BFS (0) | 2023.09.05 |