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
'Programming > Python' 카테고리의 다른 글
[LeetCode] 9. Palindrome Number (0) | 2025.05.05 |
---|---|
[프로그래머스] 의상 (0) | 2025.04.30 |
[프로그래머스] H-Index (0) | 2025.04.14 |
[프로그래머스] 네트워크 (0) | 2025.04.13 |
[프로그래머스] 모음사전 (0) | 2025.04.12 |