Menu
CoddyTech

Swim in Rising Water

n × n 높이 격자가 주어지며, 이 격자에는 0부터 n²-1까지의 모든 숫자가 정확히 한 번씩 들어 있습니다. 시간 t에는 물이 모든 곳에서 높이 t까지 차오르므로, 높이가 t 이하인 모든 칸은 물에 잠깁니다. 왼쪽 위 칸에서 시작합니다. 두 칸 모두 물에 잠겨 있을 때, 한 변을 공유하는 칸으로는 시간이 들지 않고 헤엄쳐 갈 수 있습니다. 오른쪽 아래 칸에 도달할 수 있는 가장 이른 시간을 반환하세요.

함수

swimInWater(grid: integer-2d-array) → integer
gridinteger-2d-array
높이, n개의 숫자로 이루어진 n개 행의 목록
반환값integer
오른쪽 아래 셀에 도달할 수 있는 가장 이른 시간

제약 조건

  • n == grid.length == grid[i].length
  • 1 ≤ n ≤ 100
  • 0 ≤ grid[i][j] ≤ n²-1
  • 0부터 n²-1까지의 모든 값은 정확히 한 번씩 나타납니다.

예제

입력
grid = [[0, 2], [3, 1]]
출력
2
설명
오른쪽 위 셀을 통과하는 경로는 0, 2, 1이며, 가장 높은 셀은 2입니다. 왼쪽 아래를 통과하는 경로는 0, 3, 1이며, 가장 높은 셀은 3입니다. 시간 2에는 첫 번째 경로가 물에 잠깁니다.
challenge icon

후속 질문

높이가 반복될 수 있고 10^9까지 커질 수 있다면, 어떤 접근 방식이 여전히 그대로 작동하며 무엇을 대상으로 이진 탐색을 하시겠습니까?

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

테스트 #1

테스트 #2

테스트 #3

인자

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

예상 출력

2