초보 개발자의 일기

K번째 큰 수 본문

코딩테스트/JS 알고리즘 문제(JS)

K번째 큰 수

판다꼬마 2023. 1. 9. 19:33
728x90

문제

입력

  • 첫 줄에 자연수 N과 K 입력되고, 그 다음 줄에 N개의 카드값이 입력된다.

 

 

출력

첫 줄에 K번째 수를 출력합니다. K번째 수는 반드시 존재합니다.

 

입력 예시

10 3
13 15 34 23 45 65 33 11 26 42

출력 예시

143

풀이 방법

for문을 3번 중복해 풀이하였다.

 

내 코드

<html>
<head>
    <meta charset="UTF-8">
    <title>출력결과</title>
</head>
<body>
<script>
    const sol =(n,k,s)=>{
        let answer=0;
        let tmp=new Set();
        for (let i=0; i<n; i++){
            for(let j=i+1; j<n; j++){
                for(let x=j+1; x<n; x++){
                    tmp.add(s[i]+s[j]+s[x]);
                }
            }

        }
        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(sol(10, 3, arr));
</script>
</body>
</html>

Solution

<html>
    <head>
        <meta charset="UTF-8">
        <title>출력결과</title>
    </head>
    <body>
        <script>
            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));
        </script>
    </body>
</html>

느낌점

쉽지 않다.

 

오름차순 정렬

let numbers = [1, 10, 2, 20, 3, 30];
numbers.sort(function compare(a, b) {
    return a - b;
});

console.log(numbers); // [1,2,3,10,20,30]

내림차순 정렬

let numbers = [1, 10, 2, 20, 3, 30];
numbers.sort(function compare(a, b) {
    return b - a;
});

console.log(numbers); // [1,2,3,10,20,30]

 

New Set()

자바스크립트에서의 Set은 중복이 허용되지 않는 객체이다. 안에 이미 같은 값이 존재한다면 추가되지 않는다.

=> 중복값을 허용하지 않아야하면 Set을 이용한다.

728x90

'코딩테스트 > JS 알고리즘 문제(JS)' 카테고리의 다른 글

연속 부분수열 1  (0) 2023.01.11
두 배열 합치기  (0) 2023.01.10
멘토링  (0) 2023.01.08
뒤집은 소수  (1) 2023.01.07
자릿수의 합  (0) 2023.01.06