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

2025. 7. 2. 14:15·CodingTest

문제 설명

정수 배열 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 = [];
    var sum=0;
    
    for(let i=0; i<numbers.length; i++){
        for(let j=i+1; j<numbers.length; j++){
            let sum = numbers[i]+numbers[j];
            answer.push(sum);
        }
    }
    
    return [...new Set(answer)].sort((a,b)=>a-b);
}

 

뭔가 깔끔하게 푼 것 같아서 맘에 든다 ㅎ.ㅎ

우선 두 개의 수를 뽑아 더해서 나올 수 있는 모든 수를 이중 for문을 이용해 구해주고 배열의 Set 객체를 이용해서 중복된 부분을 제거해주었다. 마지막으로 sort를 이용해서 오름차순으로 담아서 return 하면 끝. 비교적 간단한 문제였다. 

첫번째 시도때 그냥 sort()를 기본으로 사용해 정렬하였더니 한자리 수는 잘 정렬이 되었지만, 두 자릿수는 정렬이 제대로 되지 않았다.

찾아보니 sort()는 숫자를 문자로 변환한 뒤 유니코드 기준으로 크기를 비교하여 정렬하기 때문에 정렬이 제대로 적용되지 않는다고 한다.

따라서 숫자 배열을 올바르게 정렬하려면 sort((a, b)=> a-b)처럼 비교 함수를 명시적으로 지정해주어야 한다. 

 

다른 풀이

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.indexOf(numbers[i]+numbers[j])===-1){
               answer.push(numbers[i]+numbers[j]) 
           } 
        }
    }

    return answer.sort((a,b)=>a-b);
}

 

이렇게 indexOf를 사용해서 푸는 풀이도 있었다. 중복된 부분을 제거하는 방법으로는 이외에도, filter와 indexOf() 조합, reduce() 등이 있었다. 중복 제거만 하더라도 이렇게 다양한 문법이 있는데, 여러 가지를 사용해 보고 익히는 연습을 해야겠다...!

'CodingTest' 카테고리의 다른 글

[프로그래머스] Lv.1 소수 만들기 - JavaScript  (1) 2025.07.06
[프로그래머스] Lv.1 소수 찾기 - JavaScript  (0) 2025.07.05
[프로그래머스] Lv.1 이상한 문자 만들기 - JavaScript  (0) 2025.07.02
[프로그래머스] Lv.1 정수 제곱근 판별 - JavaScript  (3) 2024.01.28
[프로그래머스] Lv.1 핸드폰 번호 가리기 - JavaScript  (1) 2024.01.27
'CodingTest' 카테고리의 다른 글
  • [프로그래머스] Lv.1 소수 만들기 - JavaScript
  • [프로그래머스] Lv.1 소수 찾기 - JavaScript
  • [프로그래머스] Lv.1 이상한 문자 만들기 - JavaScript
  • [프로그래머스] Lv.1 정수 제곱근 판별 - JavaScript
김애룽
김애룽
개발하면서 공부한 것들을 끄적입니다
  • 김애룽
    김애룽의 개발 아카이브
    김애룽
  • 전체
    오늘
    어제
    • 분류 전체보기 (39)
      • React (10)
      • Next.js (2)
      • JavaScript (5)
      • CodingTest (10)
      • 대외활동 (3)
      • Git (1)
      • CS (5)
      • 정보처리기사 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    react
    useMemo
    var
    useCallback
    Programmers
    코드잇
    리액트
    javascript
    정처기
    한성대 멋사
    프로그래머스
    호이스팅
    hooks
    SSR
    js
    props
    const
    정보처리기사
    Next.js
    멋쟁이사자처럼
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
김애룽
[프로그래머스] Lv.1 두 개 뽑아서 더하기 - JavaScript
상단으로

티스토리툴바