Programming/Python
[LeetCode] 1. Two Sum
왕밤빵도라에몽
2025. 5. 4. 19:04
728x90
기본 아이디어
- 이중포문하면 되겠지만 느릴듯
이중포문 - O(n²)
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
for i in range(len(nums)-1):
for j in range(i+1, len(nums)):
if nums[i] + nums[j] == target:
return [i, j]
해시 - O(n)
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
num_map = {}
for i, num in enumerate(nums):
diff = target - num
if diff in num_map:
return [num_map[diff], i]
num_map[num] = i
target - num
이라는diff
값이 이미 num_map에 존재한다면, 이건 target으로 만들기가 가능한 조합이라는 뜻!- 그러므로 바로 반환
- 메모이제이션 처럼 값 저장해놓는 것
- 리트코드 첨 써봐!
728x90