백준 7576번 : 토마토

https://www.acmicpc.net/problem/7576

문제

1 2 3 4 5 6

풀이

BFS

Step 1

  • Moving offset을 정의해준다. (21736번 포스팅 참고)

    Step 2

  • 시작 위치를 저장해둔 배열에서 첫 번째 인덱스에 있는 토마토 좌표를 q에서 pop 한다.
  • 상하좌우로 이동하며 익힐 토마토, 즉 값이 0인 좌표를 찾는다.
  • 토마토를 익힐 때마다 익혀지는 좌표 값에 1을 더해준다. 이때, 익혀지는 좌표는 이미 1일 수도 있다. 0 -> 1로 갱신하지 않는 이유는 계속 1을 더하여 좌표의 최댓값을 구하면 총 익힌 횟수를 구할 수 있기 때문이다.

    일수

  • 0인 토마토가 남아있다면 -1을 출력하여 토마토를 다 익히지 못했음을 표시한다.
  • 다 익혔다면 좌표 중 최댓값이 정답이므로 max 값을 구해준다. 이후, 처음 시작 노드가 1이었으니 1을 빼준다.

완성된 코드

댓글남기기