티스토리 뷰
- 입력 : 세로 크기 N, 가로 크기 M ( 2 <= M,N <= 1,000 )
1 = 익은 토마토, 0 = 익지 않은 토마토, -1 = 토마토가 들어있지 않은 칸
- 출력 : 토마토가 모두 익을 때까지의 최소 날짜 출력, 저장될 때부터 모든 토마토가 익었다면 0, 모두 익지 못하는 상황이면 -1 출력
- 문제 해결 :
1) 입력을 받으면서 익은토마토의 위치를 큐에 PUSH하고 (BFS를사용), 안 익은 토마토의 갯수를 저장한다.
1-1) 안익은 토마토가 없다면 모두 익은것이므로 0을 출력하고 끝낸다.
1-2) 아니라면 큐를 이용하여 BFS를 시작한다.
2) day를 기록하기위해 큐에 들어간 사이즈만큼 탐색을 해야한다.
3) BFS의 조건 ( 토마토가 들어있지않은곳, 맵 밖 벗어난곳 ) 을 생각하여 큐에 넣는다
4) 큐 사이즈만큼 POP이 끝났으면 하루가 지난것이므로 day를 증가
5) 큐가 비어있을때까지 반복한다.
< 작성 코드 >
댓글