ex) 입력 : nums = [2,7,11,15] , target = 9 --> 출력 : [0,1]
def twoSum(nums,target):
for i in range(len(nums)):
for j in range(i+1,len(nums)):
if nums[i] + nums[j] == target:
return [i,j]
twoSum([2,7,11,15],9)
[0,1]
def twoSum(nums,target):
for i,n in enumerate(nums):
complement = target - n
if complement in nums[i+1:]:
return nums.index(n), nums[i+1:].index(complement) + (i+1)
twoSum([2,7,11,15],9)
[0,1]
def twoSum(nums,target):
nums_map = {}
for i, num in enumerate(nums):
nums_map[num] = i
#타겟에서 첫 번째 수를 뺀 결과를 키로 조회
for i, num in enumerate(nums):
if target - num in nums_map and i != nums_map[target - num]:
return nums.index(num), nums_map[target - num]
twoSum([2,7,11,15],9)
[0,1]
def twoSum(nums,target):
nums_map = {}
for i, num in enumerate(nums):
if target - num in nums_map :
return [nums_map[target - num], i]
nums_map[num] = i
본인의 값을 딕셔너리에 넣기 전에 미리 딕셔너리에 target - num이 있는지 탐색했으므로 이전과 같은 중복 방지용 코드르 넣을 필요가 없습니다.
이와 같은 코드들을 작성하면 인덱스가 0인 원소와 1인 원소의 합이 타겟넘버라는 사실을 알 수 있습니다.