코딩테스트/Programmers (프로그래머스)

[프로그래머스] 두 개 뽑아서 더하기 - Javascript (Lv.1)

지윤공원🌳 2021. 4. 9. 10:10
728x90

📖 문제설명

정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는

모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.

 

✔️ 제한조건

  • numbers의 길이는 2 이상 100 이하입니다.
  • numbers의 모든 수는 0 이상 100 이하입니다.

 

numbers result
[2, 1, 3, 4, 1] [2, 3, 4, 5, 6, 7]
[5, 0, 2, 7] [2, 5, 7, 9, 12]

 

💻 나의 코드

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

 

🎤 코드 설명

  • 이중 반복문을 사용하여 한 수를 먼저 정하고 그 수보다 뒤에 있는 수와 더한다.
  • 더한 값이 answer 배열에 없으면 push를 통해 넣어준다.
  • sort((a, b) => a, b) 함수를 통해 정렬을 해서 return한다.                                                                          + 콜백함수가 없는 sort()를 사용하지 않은 이유는 Javscript의 sort의 특이한 정렬 방법 때문이다.                     (하단의 배운 것에서 확인가능)

 

📜 채점 결과

정확성: 100.0

합계: 100.0 / 100.0

 

💬 배운 것

  • 배열.includes(요소)는 배열 내에 요소가 있는지 확인해준다.
  • Javascript의 sort()함수는 원소를 문자열로 만든 뒤에, UTF-16 코드 유닛 값을 기준으로 정렬한다. 그렇지 때문에 숫자에 대해 올바른 정렬이 나오지 않는다. 
  • sort()함수로 오름차순 정렬을 하려면 배열.sort((a, b) => a, b)와 같이 작성하면 된다.
    • a는 뒤에 있는 숫자를 의미, b는 앞에 있는 숫자를 의미한다.
    • b가 a보다 클 때만 a-b의 결과로 음수가 나온다. 
    • 결과적으로 뒤에 있는 값이 더 클때 변경이 일어난다.

 

 

 

코딩테스트 연습 - 두 개 뽑아서 더하기

정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 제한

programmers.co.kr

 

728x90