(node.js, JavaScript) 백준, 25305:커트라인

젼이·2024년 12월 5일

문제 탐색 및 설계

문제 바로가기
1. 커트라인 구하기 [ 구조 분해 할당, split ]

  • 첫째 줄의 kk를 추출하기.
    → 상을 받는 수는 커트라인 수가 된다.
  1. 내림차순으로(점수가 높은 순) 정렬하기 [ sort ]
  2. 커트라인 추출[ filter , join]
  • filter 를 사용하여 prizeNumber번째 숫자를 가져오기
    → 인덱스는 0부터 시작하므로 + 1를 해서 사람기준 1,2,3...을 구한다.

  • 전체 시간 복잡도
    • 정렬 O(Mlog(M))
    • 필터링: O(M)

코드

const fs = require("fs");
const lines = fs.readFileSync("/dev/stdin").toString().trim().split("\n");

const [n, string] = lines;
const [totalNumber, prizeNumber] = n.split(" ");

const array = string.split(" ");
const result = array.sort((a, b) => b - a);
const cutLine = result.filter((item, index) => index + 1 === parseInt(prizeNumber)).join("");

console.log(cutLine);

시도 회차 수정

  • cutLine 단순히 커트라인 위치값을 얻는데 과한것 같아 고민하다 filter 대신 인덱스 접근으로 대체.
  • O(M)을 제거 → 상수 시간 O(1)
const cutLine = result[parseInt(prizeNumber) - 1];
profile
코드도 짜고, 근육도 짜고

0개의 댓글