문제
`twoSum`함수에 숫자배열과 '특정 수'를 인자로 넘기면, 더해서 '특정 수'가 나오는 index를 배열에 담아 return.
nums: 숫자 배열
target: 두 수를 더해서 나올 수 있는 합계
return: 두 수의 index를 가진 숫자 배열
ex)
nums은 [4, 9, 11, 14], target은 13
nums[0] + nums[1] = 4 + 9 = 13
이 때, [0, 1]이 return 되어야 한다.
가정)
target으로 보내는 합계의 조합은 배열 전체 중에 2개 밖에 없다고 가정.
풀이
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];
}
}
}
}
module.exports = { twoSum };
두 index의 합이 target(특정수)가 되어야한다. 이것을 쉽게 표현하면 [0, 1, 2, 3, 4]의 배열이 있다고 할 때, [0]인덱스와 [0] [1] [2] [3] [4]를 함께 더했을 때 특정수가 되는지를 [4]까지 반복해야하기 때문에 이중 for문을 사용하였다.
그리고 두 인덱스의 합이 target과 같아지면 두 인덱스에 들어있는 수를 리턴하게 하였다.
느낀점
문제는 단순하지만 정해진 시간내에 사고하는 것이 생각보다 어렵다. 긴 시간을 두고 풀면 많은 문제들을 풀 수 있을지도 모르지만, 1시간 제한을 두고 문제를 푸니 조급해져서 그런것 같다. 하지만 코드카타를 시작한 첫 날, 문제를 해결할 수 있어서 성취감을 얻을 수 있었다. 이것이 앞으로의 원동력이 되어줄 것이다.
'Algorithms' 카테고리의 다른 글
[Code Kata] Day2 (0) | 2022.10.25 |
---|