코드카타 - day.1

가비·2020년 8월 31일
0

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

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

  • if 가 만족하지 않을 때를 위해 None을 명시(가독성 향상)
  • 굳이 필요하지 않은 else를 사용하지 않는 것이 좀 더 파이썬 다운 코드.

0개의 댓글