본문 바로가기

■ 프로그래밍/알고리즘

[JS] 특정 수가 나오는 index 찾기

[ 문제 ]

더보기

twoSum함수에 숫자배열과 '특정 수'를 인자로 넘기면, 더해서 '특정 수'가 나오는 index를 배열에 담아 return

- nums: 숫자 배열

- target: 두 수를 더해서 나올 수 있는 합계

- return: 두 수의 index를 가진 숫자 배열

 

예) 

var nums = [4, 9, 11, 14] 
var target = 13

nums[0] + nums[1] = 4 + 9 = 13 이므로,

return 값은 [0, 1]

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

 

[ 풀이 ]

2020.04.06

함수 형태가 nums[i] + nums[j] = target으로 나와야 하니, 처음에는 for문을 두 번 돌릴 생각을 했지만, 많이 써보지 않았던 forEach를 활용하기로 했다. 

const twoSum = (nums, target) => {
  var answer = [];

  for (var i = 0; i<nums.length; i++) {
    nums.forEach ( function(n) {
      if (n + nums[i] === target) {
        // console.log(i);
        answer.push(i);
        // console.log(answer);
      }
    })  
  }
  return answer;
}

var nums = [4, 9, 11, 14];
var target = 13;

twoSum(nums, target);

이 방법 외에도 for in 문을 두 번 돌려 더 간단하게 코드를 작성할 수도 있는 것 같다.