nums: 숫자 배열 target: 두 수를 더해서 나올 수 있는 합계 return: 두 수의 index를 가진 숫자 배열
예를 들어,
nums은 [4, 9, 11, 14] target은 13 nums[0] + nums[1] = 4 + 9 = 13 그러면 [0, 1]이 return 되어야 합니다.
*
target으로 보내는 합계의 조합은 배열 전체 중에 2개 밖에 없다고 가정!
🤔 빈리스트를 생성하고 반복,조건문으로 값을 더해가며 넣어주는 방법
, 빈리스트를 생성하지 않는 방법
, index()를 이용하는 방법
을 생각했는데 모두 제대로 구현하지 못해서 짝꿍의 도움으로 완성한 코드.
def two_sum(nums, target):
for a in nums:
for b in nums:
if target == a + b:
return [nums.index(a), nums.index(b)]
!but
2중 for loop는 속도면에서 오래걸리기 때문에 가급적 사용하지 않는 것이 좋다.
✨ Model solution
def two_sum(nums, target):
index_map = {}
for i in range(len(nums)):
num = nums[i]
pair = target - num
if pair in index_map:
return [index_map[pair], i]
index_map[num] = i
return None
?
return None
else
를 사용하지 않는 것이 좀 더 파이썬 다운 코드.