code-taka 01(two_sum)

Nicholas·2022년 5월 15일
0

Algorithm & DataStructure

목록 보기
1/12

문제

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

nums: 숫자 배열
target: 두 수를 더해서 나올 수 있는 합계
return: 두 수의 index를 가진 숫자 배열

가정 : target으로 보내는 합계의 조합은 배열 전체 중에 2개 밖에 없다고 가정

풀이

중첩 for문을 사용했을 경우

1차 for문을 통해 첫번째 포인트를 정한뒤 첫번째포인트를 제외한 나머지 범위를 다시한번 for문을 통해 포인트를 정한다. 그뒤에 그 포인트들의 합이 target과 동일하면 return하는 방식

def two_sum(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]

index내장함수를 사용하는 방법

조건문을 통해 target에서 for문을 돌아 나온 리스트의 값을 뺀뒤 그값이 리스트내에 있다면 return하는 방식

def two_sum(nums, target):
	for i in range(len(nums)):
		nums1 = target - nums[i]
			if nums1 in nums:
				j = nums.index(nums1)
			return [i, j]

딕셔너리를 사용하는 방법

딕셔너리를 사용해 key값에는 nums를 value에는 nums의 인덱스를 넣어 for문을 통과할때마다 저장하고 target에서 nums를 뺀값인 pair가 key값으로 있는지 조건문으로 판단해 없으면 계속 딕셔너리에 추가하고 있다면 딕셔너리의 기본속성을 활용해 return한다.

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

참고 : https://velog.io/@langssi/Python-Code-Kata-Day1

profile
WEB Developer

0개의 댓글