풀이
역시나 BFS 문제이다. 하지만 이번엔 시작점이 여러개인 탐색을 해야하기 때문에 다른 방법을 요구했다.
먼저 입력으로 정보를 받은 뒤 익어있는 토마토의 좌표를 큐에 집어넣어둔다.
이후 BFS 를 실행하여 익어있는 토마토와 인접한 익지 않은 토마토들을 찾은 뒤 처음 익어있던 토마토는 1 로 저장되어 있으니 바로 인접한 토마토들을 +1 하여 저장해준다. 이 과정을 BFS 가 끝날 때 까지 반복한다.
이후 BFS 가 종료된 상태에서의 2차원 배열을 순회하면서 출력조건에 맞춰서,
익지않은 토마토가 있을 경우 -1 을,
이미 다 익어 있을 경우 0 을,
아니라면 가장 높은 숫자에서 -1 을 한 값을 출력해주면된다.
소스코드
References