선생님, 강의에있는 토마토문제를 3차원으로 변형한것을 풀어보았는데요, 차원이 하나 늘어났을 뿐인데 어디서 잘못된것인지 잘 모르겠어서 질문드립니다.
189
작성한 질문수 4
#include<iostream>
#include<queue>
#include<vector>
#include<algorithm>
using namespace std;
struct Loc {
int z;
int x;
int y;
Loc(int a, int b, int c) {
z = a;
x = b;
y = c;
}
};
int tom[103][103][103];
int dis[103][103][103];
int main() {
queue<Loc> q;
int m, n, h;
cin >> m >> n >> h;
int flag = 0;
for (int i = 0;i < h;i++) {
for (int j = 0;j < n;j++) {
for (int k = 0;k < m;k++) {
cin >> tom[i][j][k];
if (tom[i][j][k] == 1)
q.push(Loc(i, j, k));
}
}
}
int dx[6] = { 1,-1,0,0,0,0 };
int dy[6] = { 0,0,1,-1,0,0 };
int dz[6] = { 0,0,0,0,1,-1 };
while (!q.empty()) {
Loc tmp = q.front();
q.pop();
for (int i = 0;i < 6;i++) {
int xx = tmp.x + dx[i];
int yy = tmp.y + dy[i];
int zz = tmp.z + dz[i];
if (tom[zz][xx][yy] == 0 && xx >= 0 && xx < n && yy >= 0 && yy < m && zz >= 0 && zz < h) {
tom[zz][xx][yy] = 1;
dis[zz][xx][yy] = dis[tmp.z][tmp.x][tmp.y] + 1;
q.push(Loc(zz, xx, yy));
}
}
}
int max = 0;
for (int i = 0;i < h;i++) {
for (int j = 0;j < n;j++) {
for (int k = 0;k < m;k++) {
if (tom[i][j][j] == 0) { cout << -1;return 0; }
}
}
}
for (int i = 0;i < h;i++) {
for (int j = 0;j < n;j++) {
for (int k = 0;k < m;k++) {
if (dis[i][j][j] > max)max = dis[i][j][k];
}
}
}
cout << max;
return 0;
}
먼저 좋은 강의를 제공해주셔서 정말 감사하다는 말씀 드리고 싶습니다. 너무너무 큰 도움을 받고 있습니다.
그리고 강의에 없는 문제를 질문드려서 정말 죄송합니다.ㅜㅜ
이 문제는 강의에 있는 토마토문제에서 한 차원 늘렸을 뿐이고, 그래서 구조체에 z변수를 추가해서 똑같이 풀어보았는데요. 아무리 봐도 맞는 코드인것같고, 백준에 있는 테스트케이스를 넣어봐도 잘 나오는데 틀렸다고만 나오니 답답하네요
2차원과 똑같이 코드를 구성하면 안되는이유가 있는것일까요..?
답변 1
테스트 케이스 질문
0
388
1
병합정렬 시간복잡도 질문
0
475
1
41.연속된 자연수의 합 문제풀이에서 수학적인 원리를 모르고 있습니다.
0
1365
2
질문드립니다.
0
389
1
질문드립니다!
0
437
1
dev 프로그램 질문
0
276
1
문제가 이해가 안되요
0
379
1
4번 나이차이 문제 접근법 질문 드립니다.
0
308
1
source file not compiled
0
1065
3
59번 질문드립니다.
0
374
1
25번 문제 질문
0
350
1
4. 나이차이 문제 질문입니다.
0
376
1
90번 라이언 킹 심바 1번 테스트 케이스
0
472
1
71번 문제 전역 변수 질문 있습니다
0
366
1
75번, 79번 priority_queue관련
1
360
1
75.최대 수입 스케줄
0
403
2
복면산 정답의 수
0
437
1
테스트 케이스에 대해서
0
450
1
수업 내용 질문입니다!
1
236
1
풀어보면 좋은 문제 목록 - 2580 스토쿠 DFS 질문입니다!!
0
838
2
12. 플로이드-와샬(그래프 최단거리) . 27:25초
0
257
1
다른 풀이 방식
0
318
1
크루스칼 vs 프림
0
313
1
숫자 총개수 small 질문있습니다.
0
246
1





