TIL.27 js 코드카타 1.

Haiin·2020년 11월 30일
0

위코드 자바스크립트 코드카다 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개 밖에 없다고 가정하겠습니다.



풀이

  • 배열이 주어졌을때 두 값을 더해서 타겟값이 되려면 배열에서 중복되지 않는 두 수를 뽑는 경우의 수를 생각했다.
    ex) 배열: 01, 02, 03/ 12, 13/ 23
  • 위와 같이 두 수를 뽑기 위해 이중 for문을 사용하기로 생각했고, 반환은 인덱스를 배열에 바로 넣어서 리턴해주기로 했다.
const twoSum = (nums, target) => {
  for (i = 0; i < nums.length; i ++)
    for (j = i + 1; j < nums.length; j ++)
    if (nums[i] + nums[j] === target) {
      return [i, j]
    }
}
//을 예시로 넣어줬을때,
//console.log(twoSum([4, 9, 11, 14],13))
//[0,1] 반환.

다른 풀이

function twoSum(nums, target) {
  const result = [];
  nums.forEach((num, index) => {
    if (nums.map((num) => target - num).includes(num)) result.push(index);
  });
  return result;
}
console.log(twoSum([1, 2, 4, 9], 13));

0개의 댓글