Menu
CoddyTech

Rotting Oranges

보통그래프큐python iconjava iconcpp iconc iconjs icon+10

같은 길이의 행 목록으로 격자가 주어집니다. 각 셀은 0(빈칸), 1(신선한 오렌지) 또는 2(썩은 오렌지)입니다. 매분, 위, 아래, 왼쪽 또는 오른쪽으로 썩은 오렌지와 변을 맞대고 있는 신선한 오렌지는 모두 썩습니다. 신선한 오렌지가 하나도 남지 않을 때까지 걸리는 분 수를 반환하거나, 썩지 않는 신선한 오렌지가 있다면 -1을 반환하세요. 처음부터 신선한 오렌지가 없는 격자에는 0분이 필요합니다.

함수

orangesRotting(grid: integer-2d-array) → integer
gridinteger-2d-array
격자, 각 행마다 0, 1, 2로 이루어진 목록 하나
반환값integer
오렌지가 하나도 신선하지 않을 때까지의 시간(분), 그런 일이 절대 일어나지 않으면 -1

제약 조건

  • 1 ≤ grid.length ≤ 150
  • 1 ≤ grid[i].length ≤ 150
  • 모든 행의 길이는 같습니다.
  • 각 grid[i][j]는 0, 1 또는 2입니다.

예제

입력
grid = [[2, 1, 1, 0], [0, 1, 0, 1], [1, 1, 1, 1]]
출력
6
설명
셀을 (행, 열)로 표기하면, 부패는 (0,0)에서 시작해 유일한 경로를 따라갑니다. 1분에는 (0,1), 2분에는 (0,2)와 (1,1), 3분에는 (2,1), 4분에는 (2,0)과 (2,2), 5분에는 (2,3)에 도달합니다. (1,3)에 있는 오렌지는 (2,3)에만 닿으므로, 6분에 마지막으로 부패합니다.
challenge icon

후속 질문

신선한 오렌지마다 이웃한 오렌지가 썩은 후 썩는 데 걸리는 시간이 다르다고 가정해 보세요. 그렇다면 완료 시간을 어떻게 구할 수 있을까요?

코드 초기화
def orangesRotting(grid):
    # 여기에 코드를 작성하세요

테스트 #1

테스트 #2

테스트 #3

인자

grid = [[2, 1, 1, 0], [0, 1, 0, 1], [1, 1, 1, 1]]

예상 출력

6