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한다.
'코딩 테스트 (Python) > 리트코드' 카테고리의 다른 글
[리트코드] 198. 집 도둑 (Python) (0) | 2024.01.22 |
---|---|
[리트코드] 787. K 경유지 내 가장 저렴한 항공권 (Python) (1) | 2024.01.22 |
[리트코드] 167. 두 수의 합 2 (Python) (1) | 2024.01.19 |
[리트코드] 75. 색 정렬 (Python) (0) | 2024.01.17 |
[리트코드] 179. 가장 큰 수 (Python) (0) | 2024.01.17 |