원래 토마토배열 board과 따로
같은 크기의 날짜배열 dis를 하나 더 만든다
행우선으로 포문을 돌면서
익은 토마토의 좌표를 찾아 큐에 넣고
BFS를 시작한다
큐에서 익은토마토의 좌표가 빠져나오면서
상하좌우에 안익은 토마토가 있는지 찾고
두가지를 해준다
1.board의 안익은토마토의 값 0을 익은토마토1로 바꾼다
2.dis에 익은것들이 익은지 몇일 됐는지를
표시하기위해 1을 더해준다
3.큐에 넣는다
이걸 while Q동안 하면
모든 토마토가 익는것이 퍼져나가고
큐에 더이상 남지않았을때
dis배열의 가장 큰 값이 최소 걸리는 날짜다
예외조건을 주기위해 flag에 1을주고
1.안익은 토마토가 존재하면 flag를 0으로 바꾸고
2.정상적으로 BFS가 끝났거나 토마토가 원래부터 다 익어있으면
dis의 모든값이 0일테니까
dis의 최대값을 출력하고
3.flag가 0으로 표시되어있으면 -1을 출력한다
꿈★은 이루어진다
내일채움공제 되는 중소기업 가자 화이팅!
댓글 0