문제
two_sum함수에 숫자 리스트와 '특정 수'를 인자로 넘기면,더해서 '특정 수'가 나오는 index를 배열에 담아 return해 주세요.
- nums: 숫자 배열
- target: 두 수를 더해서 나올 수 있는 합계
- return: 두 수의 index를 가진 숫자 배열
예를 들어,
nums은 [4, 9, 11, 14]
target은 13nums[0] + nums[1] = 4 + 9 = 13 이죠?
그러면 [0, 1]이 return 되어야 합니다.
- 가정
target으로 보내는 합계의 조합은 배열 전체 중에 2개 밖에 없다고 가정하겠습니다.
내 답안)
def two_sum(nums,target):
current = 0
for i in range(current,len(nums)):
for j in range(current+1, len(nums)):
if nums[i]+nums[j] == target :
return [i,j]
print(two_sum([1,2,3,4,5],9))
nums의 리스트를 순서대로 뽑아 각각 더한 값이 target이므로 for 문을 두번 돌려 target이 나오면 해당 숫자의 index값이 return되도록 했다.
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
Model solution은 딕셔너리를 사용했는데, 사실 바로 눈에 들어오지는 않는다.
아직 코드를 그만큼 잘 못보는것 같다.ㅠㅠ 노력하자!
target- num을 해서 나오는 값의 index를 리턴해주는 건 생각치 못했다.
딕셔너리를 어떤식으로 더 적용, 사용할 수 있는지 공부가 필요.