[코딩 테스트] javaScript #5

안광의·2021년 6월 27일
0

코딩 테스트

목록 보기
5/38
post-thumbnail

문제

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

제한사항
numbers의 길이는 2 이상 100 이하입니다.
numbers의 모든 수는 0 이상 100 이하입니다.

입출력 예

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

[출처] 프로그래머스(https://programmers.co.kr/learn/courses/30/lessons/68644)

function solution(numbers) {
    var result = [];
    for(let i=0; i<numbers.length; i++){
       for(let j=i+1; j<numbers.length; j++) {
           result.push(numbers[i]+numbers[j]) // 모든 수를 더해서 나온 값으로 배열 생성
       }
    }
var answer = [...new Set(result)];  // 중복값 제거
answer.sort((a, b) => a-b);  // 오름차순 정렬
return answer;
}

모든 수를 한번씩만 더해서 나온 값을 push를 통해 배열로 만든 후, Set을 이용해 중복값을 제거하고 sort로 오름차순으로 정렬하였다. sort가 배열을 문자열로 인식해 [1,10,2,3] 이런식으로 정렬하는 문제가 발생하여 compareFunction을 입력하여 수정하였다. 비교적 간단한 문제였지만 중복값을 허용하지 않는 Set이라는 object와 sort의 compareFunction을 배울 수 있었다.

profile
개발자로 성장하기

0개의 댓글