본문 바로가기

알고리즘 문제풀이/알고리즘 C++ 풀이

[백준] 7569번: 토마토 (C++ 풀이)

문제

https://www.acmicpc.net/problem/7569

 

풀이

3차원버전 토마토 문제이다.

처음엔 3차원배열로 입출력하는 것도 헷갈렸다.

그래서 계속 틀렸다고 그러고...

6방향으로 bfs 풀이했는데

조건을 하나 빼먹어서 계속 맞왜틀이었다.

다른 사람들이 질문한 게시글을 계속 뒤적거린 결과 다행히도 빠진 조건을 찾을 수 있어서 해결할 수 있었다.

 

토마토의 상태를 저장하는 a배열과, 익는 날들을 저장하는 d배열이 있다.

bfs는 a배열==0 이고, d배열==-1 일때 진행하였다. 이 말은 즉, 안익은 토마토를 아직 방문?하지 않았을 조건이다.

 

정답을 출력할 때는

a배열!=-1 이고, d배열==-1 일때는 안익은 토마토가 아직 있어서 -1을 출력하는 조건이고

그렇지 않으면 d배열중에서 최대값을 출력하도록 했다.

 

아, 그리고 그 전에 입력을 받을때, 0이 들어오는지 아닌지 체크해서

0이 들어온적이 없으면 안익은 토마토 없는 것이므로 처음부터 익힐게 없으므로 0을 출력하고 리턴하도록 했다.

 

코드

https://github.com/ziwonii24/Algorithm/blob/master/Baekjoon/7569.cpp

 

결과