카테고리 없음

[코딩테스트] 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으로 범위 설정해도 괜찮은점