티스토리 뷰

https://school.programmers.co.kr/learn/courses/30/lessons/68644

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 


 

set

function solution(numbers) {
    const set = new Set()

    for(let i = 0; i < numbers.length; i ++) {
        for(let j = 1; j < numbers.length - i; j++) {
            set.add(numbers[i] + numbers[i + j])
        }
    }

    return [...set].sort((a, b) => a - b)
}
  1. 중복값을 저장하지 않는 set 객체를 사용
  2. 이중 for문을 이용해 모든 경우의 수를 계산
  3. 전개구문을 활용해 set 객체를 배열로 만든 후 오름차순 정렬한 값을 반환

 

* 다른 사람의 풀이를 보니 다음과 같이 new 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)
}

 

includes()

function solution(numbers) {
    const answer = []

    for(let i = 0; i < numbers.length; i ++) {
        for(let j = 1; j < numbers.length - i; j++) {
            const val = numbers[i] + numbers[i + j]

            if(answer.includes(val)) continue

            answer.push(val)
        }
    }

    return answer.sort((a, b) => a - b)
}
  1. 빈 배열 생성
  2. 모든 경우의 수를 더한 후 includes()를 이용해 배열에 해당 값이 있는지 확인
    1. 해당 값이 있으면 push하지 않음
    2. 해당 값이 없으면 push
  3. 오름차순한 값을 반환

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함