[Algorithm] LeetCode 167. Two Sum II - Input Array Is Sorted in Python

하이초·2023년 6월 19일
0

Algorithm

목록 보기
64/94
post-thumbnail

💡 LeetCode 167:

두 값의 합이 target과 일치할 때 해당 인덱스 반환

🌱 코드 in Python

알고리즘: 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을 찾았는지로 준 풀이를 알게 되었다.
이렇게 할 경우 조건문 검사가 하나 줄게 되어 시간 개선이 가능해진다.


🧠 기억하자

  1. two pointer 잘만 활용하면 좋은 풀이 방법이 될 듯.

LeetCode 167 바로가기

profile
개발국대가 되는 그 날까지. 지금은 개발 응애.

0개의 댓글