inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)

5. K번째 큰 수

set을 사용하지 않고 구현해보았습니다!

246

YEONGHUN KO
1

만약 결과값이 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 };
      }

도움이 되었으면 좋겠습니다:)

답변 0