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
문제
정렬된 리스트에서 두 수의 합이 target값이 되는 인덱스 반환하기
과정
- 이진탐색을 이용하여 풀어준다.
입력
numbers = [2,7,11,15], target = 9
출력
[1,2]
풀이
class Solution:
def twoSum(self, numbers: List[int], target: int) -> List[int]:
start, end = 0, len(numbers)-1
while start <= end:
if numbers[start] + numbers[end] < target:
start += 1
elif numbers[start] + numbers[end] > target:
end -= 1
else:
return [start+1, end+1]
한 줄 씩 해석해보기
start, end = 0, len(numbers)-1
- 0과 마지막 인덱스 까지 투포인터 생성
while start <= end:
if numbers[start] + numbers[end] < target:
start += 1
elif numbers[start] + numbers[end] > target:
end -= 1
else:
return [start+1, end+1]
- start와 end가 같아지기 전까지 반복한다.
- 만약 start인덱스와 end 인덱스의 값의 합이 target보다 작다면 start+=1
- target보다 크다면 end-=1
- 그게 아니라면 target과 값이 같은것이므로 +1을 해준 후 출력한다.
'코딩 테스트 (Python) > 리트코드' 카테고리의 다른 글
[리트코드] 787. K 경유지 내 가장 저렴한 항공권 (Python) (1) | 2024.01.22 |
---|---|
[리트코드] 240. 2D 행렬 검색 2 (Python) (0) | 2024.01.19 |
[리트코드] 75. 색 정렬 (Python) (0) | 2024.01.17 |
[리트코드] 179. 가장 큰 수 (Python) (0) | 2024.01.17 |
[리트코드] 33. 회전 정렬된 배열 검색 (Python) (0) | 2024.01.13 |