알고리즘
JavaScript :: twoSum 함수
더 멋진 세상을 꿈꾸는 개발자
2020. 7. 6. 11:40
< 문제 >
twoSum 함수에 숫자 배열과 '특정 수'를 일자로 넘기면,
더해서 '특정 수'가 나오는 index를 배여렝 담아 return 해주세요.
num: 숫자 배열
target: 두 수를 더해서 나올 수 있는 합계
return: 두 수의 index를 가진 숫자 배열
예를들어,
nums는 [4, 9, 11, 14]
target은 13
nums[0] + num[1] = 4 + 9 = 13 이다.
그러면 [ 0, 1 ]이 return 되어야 한다.
*가정
target으로 보내는 합계의 조합은 배열 전체 중에 2개 밖에 없다고 가정하자.
먼저, target의 숫자와 nums 배열 중 두 숫자의 합을 비교해야 하기 때문에
우리는 nums의 배열 중 두 숫자의 합이 될 수 있는 경우의 수를 비교하기 위해 for문을 사용할 것이다.
그런데 두 수의 합 이므로 첫번째 숫자가 될 수 있는 경우의 수 + 2번째 숫자가 될 수 있는 경우의 수 를 더해야 함으로,
for문을 2번 돌릴 것이다.
아래와 같이 말이다.
const twoSum = (nums, target) => {
for (let i = 0; i < nums.length; i++) {
for (let j = i + 1; j < nums.length; j++) {
}
}
}
그리고 이 for 문 안에서 nums[i] + nums[j]가 target값과 같을 경우 i와 j를 리턴한다.
const twoSum = (nums, target) => {
for (let i = 0; i < nums.length; i++) {
for (let j = i + 1; j < nums.length; j++) {
if (nums[i] + num[j] === target) {
return [i, j];
}
}
}
twoSum([4, 9, 11, 14], 13);