안녕하세요

프로그래머스 JS [명예의 전당(1)] 본문

프로그래머스/Lv.1

프로그래머스 JS [명예의 전당(1)]

sakuraop 2023. 1. 29. 09:30

명예의 전당 문제 보기

문제 요약

점수 배열의 길이는 1부터시작하여 배열에 하나씩 추가되어 2, 3, ... , N 개가 주어집니다.

[1]

[1, 10]

[1, 10 20]

 

각 점수 배열에 대하여 K번째 점수를 반환하시오.

배열에 K번째 요소가 없을 경우엔 가장 작은 숫자를 반환하시오.

K = 2

[1] => 1

[1, 10] => 10

[1, 10 20]  => 10

 

answer = [1,10,10] 

풀이 과정

1) n개의 점수가 들어있는 배열을 내림차순하여 점수를 비교할 수 있도록 한다.

2) 배열의 길이가 K보다 작거나 같은지 비교한다.

3) 배열의 길이가 K와 작거나 같다면 가장 마지막에 있는 점수를 answer에 추가한다.

4) 배열의 길이가 K보다 크다면 않다면 K번째 점수를 answer에 추가한다.

 

 
function solution(k, score) {
  var answer = [];

  for (let i = 0; i < score.length; i++) {
    // 배열 n일차 까지의 점수를 내림차순한 배열에 대해
    const dayNScore = score.slice(0, i + 1).sort((a, b) => b - a);
    // 배열 길이가 K보다 작을 경우
    dayNScore.length <= k
      ? // ? 가장 마지막 점수를 answer에 추가
        answer.push(dayNScore[dayNScore.length - 1])
      : // : K번째 점수를 answer에 추가
        answer.push(dayNScore[k - 1]);
  }

  return answer;
}