[JS 문제풀이] 배열-두 수의 합

rlorxl·2022년 2월 15일
0

문제

배열과 정수 값이 주어질 때, 배열 내 두 값을 합하여 정수 값을 만들 수 있도록 두개의 index를 반환하는 함수를 작성하시오. 각 입력에 정확히 하나의 솔루션이 있다고 가정하고, 동일한 요소를 두번 사용하지 않는다. 배열의 index는 오름차순으로 정렬하여 반환한다.

let input5 = [
    [[2, 7, 11, 15], 9],
    [[3, 2, 4], 6],
    [[3, 3], 6],
];

풀이/코드

for문 두번

function answer(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];
            }
        }
    }
}

for문을 한번만 사용하여 찾기

map이라는 빈 객체를 만들고 value의 유/무를 찾아서 없다면 [현재 인덱스에 해당하는 수, 현재 인덱스]를 map에 추가, 있다면 [해당하는 value, 현재 인덱스]를 반환한다.

function answer(nums, target){
    let map = {}; // key, value
    for(let i = 0; i < nums.length; i++){
        if(map[target - nums[i]] == undefined) {
            map[nums[i]] = i;
        } else {
            return [ map[target - nums[i]], i ];
        }
    }
}
  • if(map[ target - nums[ i ] ] == undefined) -> value 유무 찾기
  • map[ nums[ i ] ] = i -> key : value로 저장
  • map[ target - nums[ i ] ] -> value반환
profile
즐겜하는거죠

0개의 댓글