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개 밖에 없다고 가정하겠습니다.
let num = [4, 9, 11, 14];
let taget = 13;
const twoSum = (nums, target) => {
for(let i = 0; i <nums.length; i++) {
for(let j = 0; j <nums.length; j++) {
if (nums[i] + nums[j] == target) {
return [i,j];
}
}
}
}
풀이 과정
for
문을 사용해 nums
의 인덱스 값을 i
와j
로 0부터 순회하게 만듬if
문을 사용해 nums[i]
와 nums[j]
를 더한 값과 target
이 일치 할때 return[i,j]
를 반환하게 함let num = [4, 9, 11, 14];
let taget = 13;
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,j);
return arr;
}
}
}
}
풀이 과정
arr
이라는 빈 배열을 선언해줍니다for
문을 사용해 nums
의 인덱스 값인 i
를 0부터 순회함for
문을 사용해 nums
의 인덱스 값 j
를 i
의 인덱스 값과 겹치지 않게 i
+ 1을 해서 순회함if
문을 사용해 nums[i]
와 nums[j]
를 더한 값과 target
이 일치 할때 arr
빈 배열에 push
로 i
와j
를 넣어줌arr
배열을 반환let num = [4, 9, 11, 14];
let taget = 13;
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];
}
}
}
}
위에 코드들과 다른점
j
의 인덱스값을 0부터 순회하게해 i
와 중복될수도 있기 때문에 i
+ 1로 변경push
메소드를 사용 하지 않고 i
,j
를 배열로 담아 반환문제를 풀어 보는 사람들마다 각자 다르게 생각해 문제를 풀기 때문에 이렇게 서로 같은 문제를 풀어보면서 여러가지 방법으로 풀수있구나 라는 생각이 드는 시간이였다.