inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비

선생님, 강의에있는 토마토문제를 3차원으로 변형한것을 풀어보았는데요, 차원이 하나 늘어났을 뿐인데 어디서 잘못된것인지 잘 모르겠어서 질문드립니다.

189

조조

작성한 질문수 4

0

#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차원과 똑같이 코드를 구성하면 안되는이유가 있는것일까요..?

코테 준비 같이 해요! C++

답변 1

0

김태원

안녕하세요^^

마지막 두개의 삼중for문 안에서 오타입니다.

tom[i][j][j]

0

조조

선생님..정말 부끄러워요 ㅜㅜ 답변 너무너무 감사드립니다.

0

김태원

 3차원으로 확장해서 풀어보는 것 자체만으로도 훌륭합니다. 꼭 원하는 기업에 취직하시길 응원합니다.^^

테스트 케이스 질문

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