위코드 코드카타를 풀며 정리한 내용입니다.
숫자 배열과 배열 내 두 숫자를 더해서 나온 합계로 두 숫자의 인덱스 값을 배열로 반환합니다.
//입력
nums = [4, 9, 11, 14]
target = 13 // => 배열 내 두 요소를 더해서 나온 값
//출력
[0, 1]
배열의 요소를 돌면서 확인해야 하므로 for in
반복문 형태를 만들어 줍니다.
const twoSum = (nums, target) => {
let arr = [];
for (let i in nums) {
함수 작성
}
}
return arr;
}
합계에서 배열의 요소를 뺀 값이 다른 요소이므로 배열의 요소를 돌면서 해당 값이 있는 경우 배열에 인덱스 값을 넣어줍니다.
const twoSum = (nums, target) => {
let arr = [];
for (let i in nums) {
let otherNum = target - nums[i];
if (nums.indexOf(otherNum) !== -1) { // indexOf 로 유무 확인
arr.push(parseInt(i)); // 숫자 형태로 변환해서 넣음
}
}
return arr;
}
정답 코드는 아래와 같습니다. [1, 2, 3, 4] 란 배열이 있을 때 1 을 기준으로 2, 3, 4 를 더해서 비교해보고 없다면 2를 기준으로 3, 4 만 더해 보변 됩니다. 2 앞의 1과는 그 앞에서 더해봤기 때문에 각 요소 기준으로 뒤에 오는 값들만 반복문을 돌려 더합니다.
function twoSum(nums, target) {
for (let i = 0; i < nums.length-1; i++) {
for (let j = i+1; j < nums.length; j++) {
if (nums[i] + nums[j] === target) {
return [i, j];
}
}
}
}