IT,Programming/프로그래머스_코딩테스트_javascript

프로그래머스 코딩테스트 JavaScript 풀이 _두 개 뽑아서 더하기

(범) 2022. 2. 20. 10:04

첫 번째 나의 풀이

function solution(numbers) {
    let result = []
    const len = numbers.length
        for(k=0 ; k < len-1; k++){
            for(e=0 ; e < len-k-1; e++){
                let value = numbers[k] + numbers[e+k+1]
                result.push(value)
            }
        }
    //두 수를 최소한으로 더하기(1번위치와 2번,3번,4번,5번위치를 각각 더하고, 다시 2번위치와 3번,4번,5번 더하고, 다시 3번과 4번,5번 더하고, 다시 4번과 5번 더하는 식)
    //결과값 보내기
    result.sort((a,b) => a-b)
    //오름차순으로 배열
    return Array.from(new Set(result));
    //중복된 값을 제거하고 배열로 만들기
}

 

다른 사람 풀이

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)
}

 

-나의 풀이와 비슷하지만 더 깔끔한 표현들이 있어서 참고 할 수 있겠다.

다시 풀기

function solution(numbers) {
    let result = []
    const len = numbers.length
        for(k=0 ; k < len-1; k++){
            for(e=0 ; e < len-k-1; e++){
                let value = numbers[k] + numbers[e+k+1]
                result.push(value)
            }
        }
    //두 수를 최소한으로 더하기(1번위치와 2번,3번,4번,5번위치를 각각 더하고, 다시 2번위치와 3번,4번,5번 더하고, 다시 3번과 4번,5번 더하고, 다시 4번과 5번 더하는 식)
    //결과값 보내기
    //오름차순으로 배열
    return [...new Set(result)].sort((a,b) => a-b);
    //중복된 값을 제거하고 배열로 만들기
}

 

TIL.

1. 중복된 값을 제거할 때는 new Set 함수를 사용한다.

2. Array.from함수와 new Set함수

Array.from 함수는 유사배열객체(array-like object)나 반복가능객체(iterable object)를 얕은 복사(shallow copy)하여

새로운 배열(Array) 객체로 만들어준다.

 

유사배열객체(array-like object) : length 속성과 index element를 가지는 객체

반복가능객체(iterable object) : 배열을 일반화한 객체 ex)Map, Set

 

const set = new Set([1, 2, 3]);

const arr = Array.from(set);

출처: https://hianna.tistory.com/421 [어제 오늘 내일]

 

*Array.from의 다른 표현 방식으로 [...new Set()]이 있다.