viewimage.php?id=3dafdf21f7d335ab67b1d1&no=24b0d769e1d32ca73dec84fa11d0283195504478ca9b7677dc322d30c9339b45b2fd7c64031d0d2a9afb7906510d1c11c97125a83760e771ff5c4e06174a2d0799a2549de09a3f

viewimage.php?id=3dafdf21f7d335ab67b1d1&no=24b0d769e1d32ca73dec84fa11d0283195504478ca9b7677dc322d30c9339b45b2fd7c64031d0d2a9afb7906510d1c11c97125a83760e771ff5c4e06461b7d51a67d224e4caa19



원래 토마토배열 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을 출력한다


꿈★은 이루어진다

내일채움공제 되는 중소기업 가자 화이팅!