[CodeKata] def two_sum(nums, target):

GYUBIN ·2021년 10월 27일
0

코딩테스트 준비

목록 보기
3/10

문제

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

풀이

이중 for문 사용

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

외부 nums[0], 내부 nums[1] 부터 순차적으로 반복문이 실행될 수 있게 작성해 주었다
열심히 반복하다가 nums[i] + nums[j] == target 이 되는 값을 리턴해주면 된다

다른 풀이

이중 for문이 아닌 방법은 ?

def two_sum(nums, target):
    for num in nums:
	if target - num in nums:
	    return [nums.index(num), nums.index(target - num)]

num과 target-num을 nums.index()의 값으로 주어 위치를 찾게한다

0개의 댓글