토마토2


title: “7569 - 토마토”
date: “2019-02-17”

category: “algorithm”

문제요약

  1. 인풋의 첫번째 줄은 토마토 상자의 크기가 주어진다. (1층의 폭, 높이, 몇 층이 있는지)
  2. 토마토 상자에 초기 토마토가 어떻게 들어있는지 정보가 들어온다.
  3. -1은 토마토가 들어있지 않은 칸이며, 0은 익지 않은 토마토가 들어있는칸, 1은 익은 토마토가 들어있는 칸이다.
  4. 1초 뒤에는 익은 토마토 주변의 토마토들이 익는다.
  5. 몇초가 흘러야 상자속 모든 토마토가 익는지 출력하시오 (단 모든 토마토가 익을 수 없다면 -1을 출력)

접근법

이 문제는 토마토(7576)번 문제와 똑같다. 심지어 백준사이트에서는 문제 이름도 똑같아서 햇갈린다. 차이점은 기존 토마토는 2차원이었다면 이번 문제는 3차원이라는 점이다. 아로헌 차이 때문에 기존 토마토 문제에서는 익은 토마토 주변의 인접한 토마토를 익게 만들기 위해 상하좌우 4방향만 살폈다면 이번에는 상하좌우 + 위, 아래 층을 확인해야 한다. 따라서 익은 토마토를 기억하기 위한 배열도 기존 2차원 배열에서 3차원 배열로 변경해야할 것이다.

나머지 기본적인 알고리즘은 토마토(7576)번 문제와 같기 때문에 설명은 더이상 하지 않겠다. 이전의 토마토 문제는 여기에서 확인할 수 있다.

Source Code

소스코드 보러가기

  • 아직 주석이 달려있지 않습니다.
  • pseudocode 보다는 python 코드를 올릴 예정입니다.
  • Code Review는 언제나 환영합니다 (코드를 더 깔끔하게, 효율적으로 만드는걸 도와주세요!)

업데이트:

댓글남기기