알고리즘

JavaScript :: twoSum 함수

더 멋진 세상을 꿈꾸는 개발자 2020. 7. 6. 11:40

 

 

< 문제 >

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

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

예를들어, 
nums는 [4, 9, 11, 14]
target은 13
nums[0] + num[1] = 4 + 9 = 13 이다.
그러면 [ 0, 1 ]이 return 되어야 한다.

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

 

 

먼저, target의 숫자와 nums 배열 중 두 숫자의 합을 비교해야 하기 때문에

우리는 nums의 배열 중 두 숫자의 합이 될 수 있는 경우의 수를 비교하기 위해 for문을 사용할 것이다.

그런데 두 수의 합 이므로 첫번째 숫자가 될 수 있는 경우의 수 + 2번째 숫자가 될 수 있는 경우의 수 를 더해야 함으로, 

 

for문을 2번 돌릴 것이다. 

 

아래와 같이 말이다. 

 

const twoSum = (nums, target) => {
	for (let i = 0; i < nums.length; i++) {
    	for (let j = i + 1; j < nums.length; j++) {
        }
    }
}

 

그리고 이 for 문 안에서 nums[i] + nums[j]가 target값과 같을 경우 i와 j를 리턴한다.

 

const twoSum = (nums, target) => {
	for (let i = 0; i < nums.length; i++) {
    	for (let j = i + 1; j < nums.length; j++) {
        	if (nums[i] + num[j] === target) {
            	return [i, j];
        }
    }
}

twoSum([4, 9, 11, 14], 13);