[LeetCode - 001] 2 Sum

koyo·2020년 10월 8일
0

LeetCode

목록 보기
1/3
post-thumbnail

문제

문제링크
리스트 내에 있는 숫자를 2개를 선택해 더해서 target이 나오는 경우의 index를 넣은 list를 반환하라

문제 풀이

당연히 완전탐색(Brute Force)을 통하면 해결가능하다. 하지만 좀 더 효율적인 방법을 생각해보고 투 포인터(Two Pointer)로 접근했다.
하지만 sort가 되어있지 않아 추가적인 시간이 들었다.

Hash Table를 활용해 풀었다.

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        # 사전 자료형을 선언
        dict_nums = dict()
        for i in range(len(nums)):
            x = target - nums[i]
            # 나와 맞는 짝이 이전에 존재했는가?
            if x in dict_nums:
                # 존재했다면, 두 개의 인덱스를  반환
                return [dict_nums[x], i]
            else :
                # 존재하지 않았다면 사전에 인덱스를 저장
                dict_nums[nums[i]] = i
        return []

정리

아무리 쉬운 문제라도 좀 더 효율적으로 풀어볼 수 있는 방법에 대해 고민하자!

profile
클라우드 개발자가 될 코요입니다.

0개의 댓글