두 값의 합이 target과 일치할 때 해당 인덱스 반환
알고리즘: two pointer
class Solution:
def twoSum(self, numbers: list[int], target: int) -> list[int]:
i, j = 0, len(numbers) - 1
while i < j:
tmp = numbers[i] + numbers[j]
if tmp == target:
return [i + 1, j + 1]
if tmp > target:
j -= 1
else:
i += 1
two pointer 문제임을 알고 있었기 때문에
바로 two pointer로 접근했다.
두개의 합이 target보다 크면 오른쪽 인덱스를 줄이고,
작으면 왼쪽 인덱스를 늘리는 식으로 풀었다.
다른 사람의 풀이를 찾아보니,
while numbers[i] + numbers[j] != target:
s = numbers[i] + numbers[j]
if s > target:
j -= 1
else:
i += 1
return [i + 1 , j + 1]
이런식으로 while문 반복 조건을 target을 찾았는지로 준 풀이를 알게 되었다.
이렇게 할 경우 조건문 검사가 하나 줄게 되어 시간 개선이 가능해진다.