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
- 백준 17822
- 버킷 정렬
- 스택의 특징
- AVL 시간 복잡도
- 백준 17779
- dfs
- 해시 구현
- Stack 이란
- 자료구조
- ㅣ풀이
- 원판 돌리기
- 백준
- 백준 5397
- 조세퍼스 순열
- 해시구현
- 백준 2447
- 게리멘더링2
- qorwns
- 시간 복잡도
- 5397
- heap
- 백준 1406
- 1764
- 구현
- 별 찍기 10
- 백준 1158
- c#
- 풀이
- C/C++ 구현
- 백준 17471
Archives
- Today
- Total
홍시홍의 프로그래밍
[백준 2589] 보물섬 본문
하루에 하나 알고리즘
누군가에게 조금이라도 도움이 됫으면 하는 바램으로 이 글을 작성합니다
https://www.acmicpc.net/problem/2589
풀이
dfs로 풀다가 왜 안풀리지 어떻게하면 분기점에서 다시 시작할 수 있을까 고민을 했는데 답이 안나왔습니다.
이미 ans의 최고 값은 돌아간 곳에서 정해졌으니깐요
그래서 bfs로 푸니깐 한번에 풀렸네요 ㅠㅠㅠㅠㅠ
기본저거인 bfs문제였습니다
소스코드
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | #include<iostream> #include<queue> #include<string.h> using namespace std; int n, m; int map[51][51]; int visit[51][51]; int dr[4] = { -1,0,1,0 }; int dc[4] = { 0,-1,0,1 }; int ans = 0; queue<pair<int, int>> q; void dfs(int r, int c) { q.push(make_pair(r, c)); visit[r][c] = 1; while (!q.empty()) { int x = q.front().first; int y = q.front().second; q.pop(); if (ans < visit[x][y]) { ans = visit[x][y]; } for (int i = 0; i < 4; i++) { int nx = x + dr[i]; int ny = y + dc[i]; if (nx < 0 || nx >= n || ny < 0 || ny >= m) continue; if (map[nx][ny] == 0 && 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 ch; cin >> ch; if (ch == 'W') { map[i][j] = 1; } else map[i][j] = 0; } } for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (map[i][j] == 0) { memset(visit, 0, sizeof(visit)); visit[i][j] = 1; dfs(i, j); } } } cout << ans-1 << endl; return 0; } | cs |
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
[백준 17406] 배열돌리기 4 (0) | 2019.08.13 |
---|---|
[백준 14889] 스타트와 링크 (0) | 2019.02.14 |
[백준 2178] 미로탐색 (0) | 2018.11.20 |
[백준 1697] 숨바꼭질 (0) | 2018.11.16 |
[백준 1260] dfs와 bfs (0) | 2018.11.14 |
Comments