주어진 배열에서 target이 나올 수 있는 숫자 두개의 조합을 구해야하는 문제다.
1. 2중 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]
}
}
}
}
첫번째 for문은 0번 인덱스부터 그 안에 들어가 있는 for문은 첫번째 for문에서 시작한 인덱스에서 한칸 앞에서 시작한다.
두개의 값이 target값이 같아질때까지 돌고 만약 조건에 만족되면 두개의 인덱스가 들어가 있는 배열을 반환하는 코드다.
2. 나머지값으로 탐색하기
const twoSum = (nums, target) => {
for(let i=0; i<nums.length; i++) {
const res = nums.indexOf(target-nums[i])
if(res !== -1) {
const answer = [];
answer.push(i, res);
return answer
}
}
}
for문 하나만 사용해서 풀이하는 코드다. 일단 첫번째 인덱스부터 순차적으로 검사하는데 target값에서 현재 인덱스의 뺀 값이
nums배열에 존재하면 answer이라는 빈 배열에다가 현재 인덱스와 나머지값의 인덱스를 push해주고 answer배열을
반환해준다. for문을 하나만 쓰고도 풀이가 가능해서 더 효율적인 풀이법이다.