[코드카타]Day1

jake.log·2020년 9월 1일
0

코드카타

목록 보기
1/1

문제
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개 밖에 없다고 가정하겠습니다.

내 답안)

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를 리턴해주는 건 생각치 못했다.
딕셔너리를 어떤식으로 더 적용, 사용할 수 있는지 공부가 필요.

profile
꾸준히!

0개의 댓글