카테고리 없음
[코딩테스트] K번째 큰 수
CODE_PLAN
2023. 12. 28. 23:01
나의 풀이
function solution(n, k, card) {
let answer;
// let max = Number.MIN_SAFE_INTEGER;
let Max = Math.max(...arr);
console.log('Max=?' + Max)
let newArr = [];
let upmax = arr.sort();
console.log('upmax?' + upmax)
for (let i = 0; i < arr.length; i++) {
for (let j = 1; j < k; j++) {
newArr.push(upmax)
upmax.pop()
console.log(upmax)
}
}
console.log('newArr=?' + newArr);
return answer;
}
let arr = [13, 15, 34, 23, 45, 65, 33, 11, 26, 42];
console.log(solution(10, 3, arr));
모범 답안
function solution(n, k, card){
let answer;
let tmp = 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++){
tmp.add(card[i]+card[j]+card[k]);
}
}
}
let a=Array.from(tmp).sort((a, b)=>b-a);
answer=a[k-1];
return answer;
}
let arr=[13, 15, 34, 23, 45, 65, 33, 11, 26, 42];
console.log(solution(10, 3, arr));
핵심 포인트 1) 문제에 3개 더한값? 이라고 나오면 => 3중 for문 떠올르는 아이디어 필요
2) set은 중복제거를 위해 사용하고, set은 sort를 못쓰니 array.from 으로 배열 만들고 sort 사용해서 내림차순으로 만들기
3) 모범답안 풀이에 <n; 이렇게 범위 설정했는데 n-2로 하면 더 정확하게 표현되지만 어차피 돌면서 걸러지기에 n으로 범위 설정해도 괜찮은점