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분에 마지막으로 부패합니다.

lock icon제출 시 숨은 테스트 +21개

challenge icon

후속 질문

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

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

케이스 1

케이스 2

케이스 3

입력

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

기대값

6