728x90
0. [c++] 백준 - |
https://www.acmicpc.net/problem/7579
1. 풀이 |
이 문제는 7576번 문제인 토마토(https://www.acmicpc.net/problem/7576)와 너무 비슷하기에 풀이는 생략한다.
이에 대한 풀이가 궁금하다면 https://kyunstudio.tistory.com/118를 참고해주세요.
2. 소스코드 |
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 | #include<iostream> #include<queue> using namespace std; int tomatoBox[102][102][101]; int Y, X, H, MAX; int dirX[6] = { 0, 0, 1, -1,0,0 }; int dirY[6] = { 1, -1, 0, 0,0,0 }; int dirH[6] = { 0,0,0,0,1,-1 }; queue<pair<pair<int, int>, int> > findHere; int Max(int a, int b) { return a > b ? a : b; } void BFS(int hereY, int hereX, int hereH) { //6방향 탐색을 들어가자 for (int i = 0; i < 6; i++) { int nextY = hereY + dirY[i], nextX = hereX + dirX[i], nextH = hereH + dirH[i]; //범위를 넘지 않도록 조건을 넣어준다. if (nextY < Y&&nextX < X && nextY >= 0 && nextX >= 0 && nextH >= 0 && nextH < H) { if (tomatoBox[nextY][nextX][nextH] == 0) { tomatoBox[nextY][nextX][nextH] = tomatoBox[hereY][hereX][hereH] + 1; findHere.push({{ nextY, nextX }, nextH}); } } } } int main() { cin >> X >> Y >> H; for (int h = 0; h < H; h++) for (int y = 0; y < Y; y++) for (int x = 0; x < X; x++) { cin >> tomatoBox[y][x][h]; if (tomatoBox[y][x][h] == 1) findHere.push({{ y,x }, h}); } while (!findHere.empty()) { BFS(findHere.front().first.first, findHere.front().first.second, findHere.front().second); findHere.pop(); } for (int h = 0; h < H; h++) for (int y = 0; y < Y; y++) for (int x = 0; x < X; x++) { if (tomatoBox[y][x][h] == 0) { cout << -1; return 0; } MAX = Max(MAX, tomatoBox[y][x][h]); } cout << MAX - 1; return 0; } | cs |
3. 참고 |
https://kyunstudio.tistory.com/118
질문이나 지적 있으시면 댓글로 남겨주세요~
도움 되셨으면 하트 꾹!
'<백준> > |c++| normal' 카테고리의 다른 글
[c++] 백준 10216 - Count Circle Groups(BFS, DFS) (0) | 2019.05.11 |
---|---|
[c++] 백준 2667 - 단지번호붙이기 (0) | 2019.05.10 |
|c++| 백준 7576 - 토마토(BFS, DFS의 차이) (0) | 2019.05.10 |
|C++| 백준 1289 - 트리의 가중치(깊이 우선 탐색,DFS) (0) | 2019.05.10 |
[c++] 백준 1693 - 트리 색칠하기 (0) | 2019.05.09 |