만약 결과값이 result = [152, 152, 152, 151, 151, 150] 이렇게 나왔다고 가정할때 3번째로 큰수는 150 입니다.
코딩 실력을 늘리고 싶어서 set을 쓰지 않고 어떻게 구현할 수 있을까 생각해보았습니다.
결국 result[i] === result [i+1] 일때 그냥 지나가고 아니면 cnt를 하나 올리는 방법으로 해보았습니다.
function kthGreatest(arr, k) {
const sum = [];
let kth;
// 모든 경우의 수를 합하여 sum에 보관
for (let x = 0; x < arr.length - 2; x++) {
for (let y = x + 1; y < arr.length - 1; y++) {
for (let z = y + 1; z < arr.length; z++) {
sum.push(arr[x] + arr[y] + arr[z]);
}
}
}
// 정렬
sum.sort((a, b) => b - a);
let idx = 0;
let count = 0;
// k 번째로 큰 수 구함
while (count < k) {
// k 번째가 없을 경우 undefined함
if (!sum[idx]) return undefined;
if (sum[idx] === sum[idx + 1]) {
++idx;
continue;
} else {
++count;
++idx;
}
kth = sum[idx - 1];
// if (!kth) return undefined;
}
return { kth, sum };
}
도움이 되었으면 좋겠습니다:)