Javascript/Basic

[코딩테스트/배열] Two Sum by LeetCode

yoonjong Park 2022. 3. 12.

문제

Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target.

You may assume that each input would have exactly one solution, and you may not use the same element twice.

You can return the answer in any order.

정수 숫자와 정수 대상의 배열이 주어지면 두 숫자의 인덱스를 반환하여 대상에 더합니다. 

각 입력에 정확히 하나의 솔루션이 있다고 가정하고 동일한 요소를 두 번 사용할 수 없습니다. 

답변은 어떤 순서로든 반환할 수 있습니다.

 

example 1

Input: nums = [2,7,11,15], target = 9
Output: [0,1]
Explanation: Because nums[0] + nums[1] == 9, we return [0, 1].

example 2

Input: nums = [3,2,4], target = 6
Output: [1,2]

 

내가 작성한 코드 (통과)

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */
 
const twoSum = (nums, target) => {
    const returnNumbers = loop(nums, target)
    return returnNumbers;
};

const loop = (numsArr, targetNum) => {
    
    for (let i=0; i<numsArr.length-1; i++){
        for (let j=i+1; j<numsArr.length; j++){
            if(numsArr[i]+numsArr[j] === targetNum) {
                return [i, j];
            }
        }
    }
    return null;
}

 

배운 점

- j 배열에서 i+1 을 해줘서 i 이후의 값만 처리하면 되는 것에 주의해야 했다. 쓸데없는 연산을 추가적으로 하기도하고, i === j 인 상황일 때도 연산해서 틀리는 경우가 발생했었다.

- return null; 로 연산이 되지 않는 상황에 대한 처리도 해주어야 했다.

출처 : https://leetcode.com/problems/two-sum/

댓글