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
- 백준
- 자료구조
- qorwns
- 버킷 정렬
- C/C++ 구현
- 스택의 특징
- 백준 17822
- 5397
- 별 찍기 10
- AVL 시간 복잡도
- 해시 구현
- heap
- 백준 1158
- 백준 17471
- 풀이
- 백준 2447
- 해시구현
- ㅣ풀이
- 원판 돌리기
- 조세퍼스 순열
- Stack 이란
- 백준 17779
- 1764
- 백준 5397
- 구현
- 게리멘더링2
- c#
- 백준 1406
- dfs
- 시간 복잡도
Archives
- Today
- Total
홍시홍의 프로그래밍
[백준 2178] 미로탐색 본문
하루에 하나 알고리즘
누군가에게 조금이라도 도움이 됫으면 하는 바램으로 이 글을 작성합니다
https://www.acmicpc.net/problem/2178
기본적인 bfs 문제 입니다.
오랜만에 푸니 pop하는게 빠져 무한루프로 빠져 오잉??
풀이
bfs는 옆칸으로 전염되는 바이러스다 생각하는게 가장 이해가 편하다고 생각합니다
조건이 맞을 경우 q에 삽입
또다시 진행
종료 조건에서 종료
소스 코드
#include <iostream>#include <queue>using namespace std;int n, m;int map[101][101];int visit[101][101];int ans = 0;queue<pair<int, int>> q;int dx[4] = { -1,0,1,0 };int dy[4] = { 0,-1,0,1 };void bfs(){visit[0][0] = 1;q.push(make_pair(0, 0));while (!q.empty()){int x = q.front().first;int y = q.front().second;q.pop();if (x == n - 1 && y == m - 1){ans = visit[n - 1][m - 1];return;}for (int i = 0; i < 4; i++){int nx = x + dx[i];int ny = y + dy[i];if (nx < 0 || nx >= n || ny < 0 || ny >= m)continue;if (map[nx][ny] == 1 && visit[nx][ny] == 0){visit[nx][ny] = visit[x][y] + 1;q.push(make_pair(nx, ny));}}}}int main(){cin >> n >> m;for (int i = 0; i < n; i++){for (int j = 0; j < m; j++){char x;cin >> x;int xx = (int)x - 48;map[i][j] = xx;}}bfs();cout << ans << endl;return 0;}
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
[백준 17406] 배열돌리기 4 (0) | 2019.08.13 |
---|---|
[백준 14889] 스타트와 링크 (0) | 2019.02.14 |
[백준 2589] 보물섬 (0) | 2018.11.22 |
[백준 1697] 숨바꼭질 (0) | 2018.11.16 |
[백준 1260] dfs와 bfs (0) | 2018.11.14 |