문제
프로그래머스 월간 코드 챌린지 시즌1 두 개 뽑아서 더하기
programmers.co.kr/learn/courses/30/lessons/68644?language=javascript
언어
자바스크립트(JavaScript)
접근 방법
- n개 중에 r개를 뽑는 조합 배열을 생성한다.
- 조합 배열을 이용하여 두 개 뽑아서 더한 결과 배열을 생성한다.
- set을 이용하여 중복을 제거한다.
- sort를 이용하여 오름차순으로 정렬한다.
코드
function solution(numbers) {
// 조합 생성
const combList = [];
comb(combList, [], 0, numbers.length, 2, 0);
// 합 배열 생성
let resultList = [];
combList.forEach(comb=>{
resultList.push(numbers[comb[0]]+numbers[comb[1]]);
})
// 중복 제거
resultList = Array.from(new Set(resultList));
// 오름 차순
resultList.sort((a,b)=>a-b);
return resultList;
}
// 조합 배열 생성
function comb(list, arr, idx, n, r, target){
if (r===0){
list.push(Object.assign([], arr));
}else if (target === n){
return ;
}else{
arr[idx] = target;
comb(list, arr, idx + 1, n, r - 1, target + 1);
comb(list, arr, idx, n, r, target + 1);
}
}
복기
- 어렵지 않게 풀었다.
- 조합, set을 이용한 중복 제거, sort을 이용한 오름 차순 정렬을 사용할 줄 알아야 한다.
'개발 공부 > 알고리즘 문제 풀이' 카테고리의 다른 글
[프로그래머스] 삼각 달팽이 (0) | 2021.04.12 |
---|---|
[프로그래머스] 다리를 지나는 트럭 (0) | 2021.04.07 |
알고리즘 복잡도와 빅 오 표기법 (0) | 2020.06.20 |
[프로그래머스] [3차] n진수 게임 (0) | 2020.06.11 |
[프로그래머스] 오픈채팅방 (0) | 2020.06.09 |