CodeKata 1

이성보·2020년 11월 15일
0

문제

twoSum 함수에 숫자배열과 '특정 수'를 인자로 넘기면,
더해서 '특정 수'가 나오는 index를 배열에 담아 return해 주세요.

def two_sum(nums, target):
  x = []
  y = []
  for i in nums:
    for j in nums:
      if i+j == target:
        x.append(i)
        x.append(j)
  
  y.append(nums.index(x[0]))
  y.append(nums.index(x[1]))
  
  return y

중첩 루프는 효율이 좋지 않으므로, 사용을 지양

  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

딕셔너리를 사용하고 target 과 num 의 차를 index_map 안 에서 구하는 방법을 쓰면 루프 한 번으로 답을 구할 수 있다.

0개의 댓글