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
- SWEA
- 숙명여자대학교 정보보안동아리
- lob
- 드림핵
- c
- hackctf
- siss
- hackerrank
- BOJ Python
- Sookmyung Information Security Study
- The Loard of BOF
- C언어
- 백준
- 풀이
- BOJ
- 파이썬
- Python
- 머신러닝
- 기계학습
- 생활코딩
- PHP 웹페이지 만들기
- c++
- XSS Game
- WarGame
- CSS
- 웹페이지 만들기
- 자료구조 복습
- 숙명여자대학교 정보보안 동아리
- Javascript
- HTML
Archives
- Today
- Total
혜랑's STORY
[BOJ_C++] 7569번: 토마토 본문
CODE
#include <bits/stdc++.h>
using namespace std;
int board[102][102][102];
int dist[102][102][102];
int n, m, h, day;
int dx[6] = {1, 0, 0, -1, 0, 0};
int dy[6] = {0, 1, 0, 0, -1, 0};
int dz[6] = {0, 0, 1, 0, 0, -1};
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> m >> n >> h;
queue<tuple<int, int, int>> q;
for(int k=0; k<h; k++){
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
cin >> board[i][j][k];
if(board[i][j][k] == 1) q.push(make_tuple(i, j, k));
if(board[i][j][k] == 0) dist[i][j][k] = -1;
}
}
}
while(!q.empty()){
auto cur = q.front(); q.pop();
for (int dir = 0; dir < 6; dir++){
int nx = get<0>(cur) + dx[dir];
int ny = get<1>(cur) + dy[dir];
int nz = get<2>(cur) + dz[dir];
if(nx < 0 || nx >= n || ny < 0 || ny >= m || nz < 0 || nz >= h) continue;
if(dist[nx][ny][nz] >= 0) continue;
dist[nx][ny][nz] = dist[get<0>(cur)][get<1>(cur)][get<2>(cur)] + 1;
q.push(make_tuple(nx, ny, nz));
}
}
day = 0;
for(int k=0; k<h; k++){
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
if(dist[i][j][k] == -1){
cout << -1;
return 0;
}
day = max(day, dist[i][j][k]);
}
}
}
cout << day;
return 0;
}
풀이
앞서 풀었던 7576 토마토와 풀이가 거의 비슷하다. (다른 점이라고는 높이가 생겼다는 정도) 토마토를 담을 3차원 배열을 선언한 뒤, 7576 토마토와 같은 원리로 1의 값을 가지는 보드는 큐에 넣고 0의 값을 가지는 보드 위치의 거리 배열은 -1을 넣는다. 이후 bfs를 통해 토마토간 거리를 계산한 뒤 -1이 있다면 -1을 없다면 가장 큰 값을 출력하면 된다.
결과
'무지성 공부방 > 알고리즘 해결' 카테고리의 다른 글
[BOJ_C++] 7562번: 나이트의 이동 (6) | 2022.10.10 |
---|---|
[BOJ_C++] 5427번: 불 (0) | 2022.10.10 |
[BOJ_C++] 7576번: 토마토 (0) | 2022.10.06 |
[BOJ_C++] 10026번: 적록색약 (0) | 2022.10.05 |
[BOJ_C++] 3986번: 좋은 단어 (0) | 2022.09.30 |