티키타카 코드카타🤯 - DAY1

Carminido·2020년 2월 11일
0

알고리즘티키타카

목록 보기
1/3

1. 문제

twoSum함수에 숫자배열과 '특정 수'를 인자로 넘기면,
더해서 '특정 수'가 나오는 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개 밖에 없다고 가정하겠습니다.

출저: wecode repl.it


2. 문제 해석

숫자가 나열되어 있는 배열이 있습니다. 그리고 어떤 숫자가 있습니다.
[1,10,22,6] , 32 이 인자로 들어간다면 저 배열 중 어떤 수와 어떤 수를 더해야 32가 나올까요? 맞습니다. 10 + 22 = 32

우리는 배열의 숫자 중에서 더해서 특정 수 ( target)가 나오게 하는 index배열 에 담아서 리턴해야 합니다.

3. 문제 풀이

우리가 필요한 것은 배열에 있는 숫자들의 합입니다.
이 문제를 조금 더 쉽게 이해하기 위해서 어릴적에 풀어보았던 수학 문제를 상상해봅시다.
A, B, C, D 라는 아이들이 있는데 각각 만나서 악수를 한다고 하면 이렇게 되겠죠.

보면 [0] 은, 자신 이외의 그 다음 인덱스에 모두 가야 하고
그게 끝나면 [1]은 그 다음의 인덱스들에게
그게 끝나면 [2]는 그 다음의 인덱스에게 가면 됩니다.

이걸 코드로 바꾼다고 생각하면 인덱스를 하나씩 거쳐야 하기 때문에 for문이 필요하겠습니다. 그런데 우리가 생각해야 하는 for문이 두가지 입니다.
하나는,다른 숫자를 찾아가는 중심이 될 인덱스
그리고 그 숫자가 찾아가서 더해질 인덱스


const twoSum = (nums, target) => {
 for ( let i= 0; i<nums.length; i++){
   for(let j = i+1; j<nums.length; j++){
   if(nums[i] + nums[j] === target){
     return [i , j]
   } 
  }
 }
}
profile
나는야 코린이 하지만 무럭무럭 자라고 있죠

0개의 댓글