[BOJ7569] 토마토

Updated:

며칠이 지나면 토마토들이 모두 익는지 구하기

  • 격자모양 상자에 토마토 보관, 상자 수직으로 쌓음
  • 익은 토마토는 안 익은 토마토 하루만에 익게 만듬
  • 아래, 위, 그리고 사방으로 퍼트림
  • 저절로 익는 경우 x
  • 모든 토마토가 익는 최소 일수

입력

  • 첫 줄 M, N, H (가로, 세로, 높이) (2 <= M, N <= 100) (1<=H<=100)
  • 둘째 줄 부터 N줄은 상자에 저장된 토마토정보
  • 1은 익은 토마토, 0은 익지 않은 토마토, -1 토마토가 없는 칸

출력

  • 토마토가 모두 익는 최소 날짜
  • 이미 모두 익어있는 상태면 0 출력
  • 모두 익지 못 하는 상황이면 -1 출력

설계

  • 현재 익은 ‘모든’ 토마토를 기준으로 동시에 다음 익을 토마토로 옮겨가야하기 때문에 BFS 이용
  • 3차원 배열로 토마토위치 구성
  • 큐에 주어진 토마토 위치 담기
  • (BFS) 현재 담긴 큐의 모든 좌표를 기준으로 6방향의 안 익은 토마토 체크하여 큐에 넣기
  • 날짜 카운트 + 1
  • 토마토 입력에 0이 없으면 0, 모든 토마토를 익히지 못 할 경우 -1, 그 외에는 날짜 출력

How I solved(click to github)


ref :
BOJ7569

Leave a comment