문제링크
리스트 내에 있는 숫자를 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 []
아무리 쉬운 문제라도 좀 더 효율적으로 풀어볼 수 있는 방법에 대해 고민하자!