twoSum함수에 숫자배열과 '특정 수'를 인자로 넘기면, 더해서 '특정 수'가 나오는 index를 배열에 담아 return해 주세요.
nums: 숫자 배열
target: 두 수를 더해서 나올 수 있는 합계
return: 두 수의 index를 가진 숫자 배열
예를 들어,
nums은 [4, 9, 11, 14] target은 13
nums[0] + nums[1] = 4 + 9 = 13 이죠?
그러면 [0, 1]이 return 되어야 합니다.
const twoSum = (nums, target) => {
// 아래 코드를 작성해주세요.
let arr = [];
for(let i =0;i<nums.length;i++){
for(let j = i+1;j<nums.length;j++){
if(nums[i] + nums[j] === target){
arr.push(i);
arr.push(j);
}
}
}
return arr;
}
for (i = 0; i < nums.length; i++) {
if(nums.indexOf(target-nums[i]) != -1) {
return [i, nums.indexOf(target-nums[i])];
}
}
const twoSum = (nums, target) => {
let result = [];
const subArr = nums.map(num => target - num);
const intersection = nums.filter(num => subArr.includes(num));
intersection.forEach(num => result.push(nums.indexOf(num)))
return result;
}
팀원분들 중 이중 for문을 사용하지 않고 푸신 분이 계셔서 코드를 보여달라 요청드렸다 ㅎㅎ;;
for문을 돌면서 target의 수를 빼 인덱스를 찾는 방법은 내가 생각지 못한 부분이고, 2중 for문도 아니기 때문에 좋은 풀이 같아 기록해 두려 한다.
두 번째 코드 역시 동기 분 중 한분이 작성해주셨는데, map, filter, includes 등 프로젝트에서도 유용하게 사용할 수 있을 것 같은 메서드들을 많이 활용하셨다.( 나두 이런 쌈박한 코드로 문제를 풀고싶다ㅎㅎ 💨)
이렇게 코드 카타를 하면서 다른 사람들의 코드도 볼 수 있어 매일매일 진행한다면 유익한 시간이 될 수 있을것 같다.