Menu
CoddyTech

Search a 2D Matrix

보통이진 탐색python iconjava iconcpp iconc iconjs icon+10

행이 m개이고 열이 n개인 정수 격자 matrix와 정수 target이 주어집니다. 각 행은 오름차순으로 정렬되어 있으며, 각 행의 첫 번째 값은 그 위 행의 마지막 값보다 큽니다. target이 격자에 있으면 true를, 그렇지 않으면 false를 O(log(m × n)) 시간에 반환하세요.

함수

searchMatrix(matrix: integer-2d-array, target: integer) → boolean
matrixinteger-2d-array
행별로 정렬된 행 목록으로 주어지는 그리드
targetinteger
찾을 값
반환값boolean
true if target가 그리드에 있으면, 그렇지 않으면 false

제약 조건

  • 1 ≤ m, n ≤ 100, 여기서 m = matrix.length이고 n = matrix[i].length입니다.
  • 모든 행의 길이는 동일하게 n입니다.
  • -104 ≤ matrix[i][j], target ≤ 104
  • 각 행은 엄격한 오름차순으로 정렬되어 있으며, 각 행의 첫 번째 값은 이전 행의 마지막 값보다 큽니다.

예제

입력
matrix = [[2, 5, 9, 14], [17, 21, 26, 30], [33, 38, 45, 52]]target = 26
출력
true
설명
행을 순서대로 읽으면 12개의 값은 하나의 정렬된 목록입니다. 위치 0부터 11까지 이진 검색을 수행하면 위치 5의 21(너무 작음), 위치 8의 33(너무 큼)을 확인한 다음 위치 6에서 26을 찾습니다.
challenge icon

후속 질문

행의 길이가 서로 다르더라도 처음부터 끝까지 정렬되어 있다고 가정해 봅시다. 위치를 행과 열로 어떻게 변환할 수 있을까요? 검색 비용은 얼마나 들까요?

코드 초기화
def searchMatrix(matrix, target):
    # 여기에 코드를 작성하세요

테스트 #1

테스트 #2

인자들

matrix = [[2, 5, 9, 14], [17, 21, 26, 30], [33, 38, 45, 52]]
target = 26

예상 출력

true