1~ 100 사이의 숫자 N 개가 입력됩니다.
이 중 세 개의 숫자를 골라서 합하여 나오는 모든 경우를 기록합니다.
기록한 값 중 K번째로 큰 수를 출력합니다.
(중복값은 무시합니다.)
예시)
입력:
n, k
숫자 N개
10 3
13 15 34 23 45 65 33 11 26 42
출력:
143
<script>
function solution(n,k,card){
let sumNumbers = [];
for(let i=0;i <n; i++){
for(let j=i+1; j<n;j++){
for(let k=j+1;k<n;k++){
sumNumbers.push(card[i]+card[j]+card[k]);
}
}
}
sumNumbers.sort((a,b)=>b-a);
sumNumbers = new Set(sumNumbers);
sumNumbers = Array.from(sumNumbers);
return sumNumbers[k-1];
}
let arr=[13, 15, 34, 23, 45, 65, 33, 11, 26, 42];
console.log(solution2(10, 3, arr));
</script>
<script>
function solution2(n,k,card){
let answer;
let temp = new Set();
for(let i=0;i <n; i++){
for(let j=i+1; j<n;j++){
for(let k=j+1;k<n;k++){
temp.add(card[i]+card[j]+card[k]);
}
}
}
temp = Array.from(temp).sort((a,b)=>b-a);
return temp[k-1];
}
let arr=[13, 15, 34, 23, 45, 65, 33, 11, 26, 42];
console.log(solution2(10, 3, arr));
</script>
위 코드와 크게 다른 것은 없지만,
처음부터 set 자료형에 세 수의 합을 저장하여 나중에는 배열화 한번으로 중복을 제거한 배열을 만들 수 있습니다.
코드 간소화 ..