Lv01-두 개 뽑아서 더하기

zzzzzang_gu·2023년 2월 21일
0

알고리즘

목록 보기
3/10

내 풀이


function solution(numbers) {
    var answer = [];
    
    for(let i = 0;i<numbers.length;i++){
        for(let j = i+1;j<numbers.length;j++){
            answer.push(numbers[i]+numbers[j])
        }
    }
    answer = new Set(answer)
    answer = Array.from(answer)
    answer.sort((x,y)=>x-y)
    
    
    return answer;
}

2중 for문을 이용해 i,j를 서로 겹치지 않게 합한 수를 anwer 배열에 push 해주고
set 객체는 value만을 저장하며 중복을 허용하지 않는 것을 이용해 set 객체로 변경한 뒤 다시 배열로 변환하는 방법을 사용했다.

다른 사람 풀이


function solution(numbers) {
    const temp = []

    for (let i = 0; i < numbers.length; i++) {
        for (let j = i + 1; j < numbers.length; j++) {
            temp.push(numbers[i] + numbers[j])
        }
    }

    const answer = [...new Set(temp)]
    return answer.sort((a, b) => a - b)
}


const anwer = [...new Set(temp)] -> 전개 연산자를 이용한 방법까지는 생각하지 못했다. 알고는 있지만, 이용하지 못하는게 생각보다 많은 것 같다. 문제를 못 풀어서 풀이 방법을 보면 답답하다...많이 풀어보는게 답인거겠지..?

또 다른 풀이

function solution(numbers) {
    var answer = [];
    numbers = numbers.sort();
    console.log(numbers);
    for(var i = 0; i < numbers.length; i++){
        for(var k = i+1; k < numbers.length; k++){
            if(!answer.includes(numbers[i]+numbers[k])){
                answer.push(numbers[i]+numbers[k]);
            }
        }
    }
    answer = answer.sort(function(a, b){
        return a-b;
    });
    return answer;
}

includes 메서드를 사용해 푸는 방법도 있다.

profile
프론트엔드 개발자가 되겠습니다🔥

0개의 댓글