반응형
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
- Algorithm
- deletion
- function_template
- 13305
- sstream
- sort
- 문법
- Critical_Path_Analysis
- 백준
- 자료구조
- c++
- Pair
- 예제
- 구현
- '0'
- Biconnected_Component
- red-black tree
- STL
- Articulation_Point
- 알고리즘
- connected_component
- Heap
- 5397
- qsort
- 총정리
- template
- list
- singly Linked List
- class_template
- data_structure
Archives
- Today
- Total
- Today
- Total
- 방명록
어제의 나보다 성장한 오늘의 나
[c++][BFS] 백준 2178번 문제 풀이 본문
반응형
BFS 문제 중 기본 문제이다.
BFS , DFS 문제를 찾고 있다면 이 문제를 풀어보는 것을 추천한다.
풀이
◎ BFS 방식으로 해결 한다. (queue STL을 사용한다.)
◎ 한번 움직일 때마다 현재 몇번 왔는지를 기록한다. (map에 기록해 두었다.)
◎ 경계를 넘지 않고 , 1이면 이동한다.
BFS 방식으로 상하좌우 모두 이동 가능한지 확인 해보고 가능 하다면 queue에 저장.
queue에 담긴 좌표를 하나씩 꺼내보면서 탐색. queue에서 모두 꺼내고, 비게 되었다면 탐색을 마친다.
반드시 도착 경로가 있기 때문에 , 탐색을 마쳤을 때 이동 횟수가 map[N][M]에 저장 되어 있다.
Coding
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
int map[101][101];
queue<pair<int,int>> q;
int x , y;
int nx ,ny;
int move_one[4][2] = { {0,1} , {0,-1} , {1,0} , {-1,0} };
int N , M;
void BFS(){
pair<int,int> p = {1,1};
q.push(p);
while(!q.empty()){
x = q.front().second;
y = q.front().first;
q.pop();
for(int i = 0 ; i < 4 ; ++i){
nx = x + move_one[i][0];
ny = y + move_one[i][1];
if(nx >=1 && nx <= M && ny >= 1 && ny <= N && map[ny][nx] == 1){
q.push({ny,nx});
map[ny][nx] = map[y][x] + 1;
}
}
}
}
int main(int args ,char** argv){
cin >> N >> M;
string temp;
for(int i = 1 ; i <= N ; ++i){
cin >> temp;
for(int j = 1 ; j <= temp.size() ; ++j){
map[i][j] = temp[j-1]-'0';
}
}
BFS();
cout << map[N][M];
}
백준 2178번 문제
https://www.acmicpc.net/submit/2178
반응형
'c++ > 백준 문제 풀이' 카테고리의 다른 글
[C++][Graph] 백준 1197번 문제 풀이 및 설명 (0) | 2022.07.01 |
---|---|
[C++][코딩테스트] 시간 부족 문제 해결 꿀팁 정리( endl , ios_base::sync_with_stdio(false) , cin.tie(NULL) , cout.tie(NULL) ) (0) | 2022.07.01 |
[c++][백준] "출력 형식이 잘못 되었습니다" 오류 해결 방법 (0) | 2022.02.24 |
[c++][Greedy] 백준 1339번 문제 풀이 (0) | 2022.02.23 |
[c++][Greedy] 백준 10610번 문제 풀이 (0) | 2022.02.22 |
Comments