코딩 테스트 (Python)/리트코드

[리트코드] 240. 2D 행렬 검색 2 (Python)

hihyuk 2024. 1. 19. 14:45
 

LeetCode - The World's Leading Online Programming Learning Platform

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

문제

m x n 그래프에서 target 값이 있다면 Treu 없다면 False를 출력해라

과정

  • 이진탐색을 이용하여 풀어준다.

 

입력

matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 5

출력

True

 

풀이

class Solution:
    def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
        start, end = 0, len(matrix[0])-1
        while start < len(matrix) and end >= 0:
            if matrix[start][end] < target:
                start += 1
            elif matrix[start][end] > target:
                end -= 1
            else:
                return True
        return False

 

한 줄 씩 해석해보기

start, end = 0, len(matrix[0])-1
  • 0과 마지막 첫번째 행의 마지막 인덱스 까지 투포인터 생성
  • 한 행씩 탐색한다.
while start < len(matrix) and end >= 0:
    if matrix[start][end] < target:
        start += 1
    elif matrix[start][end] > target:
        end -= 1
    else:
        return True
return False
  • start가 matrix 길이보다 커지거나 0이하가 되기 전까지 탐색한다.
  • 만약 해당 좌표의 값이 target보다 작다면 start+=1
  • target보다 크다면 end-=1
  • 그게 아니라면 target과 값이 같은것이므로 True를 return한다.
  • while문을 다 돌았다면 False를 return한다.