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를 배열로 담아 반환문제를 풀어 보는 사람들마다 각자 다르게 생각해 문제를 풀기 때문에 이렇게 서로 같은 문제를 풀어보면서 여러가지 방법으로 풀수있구나 라는 생각이 드는 시간이였다.