프로그래머스 | 명예의 전당 (1) (Java)

mul·2023년 2월 7일
0

코딩테스트연습

목록 보기
12/56

🔒 문제

프로그래머스 Lv.1 명예의 전당 (1)

🔑 해결

명예의 전당 목록의 점수의 개수 k, 1일부터 마지막 날까지 출연한 가수들의 점수인 score가 주어졌을 때, 매일 발표된 명예의 전당의 최하위 점수를 return하는 solution 함수를 작성하는 문제이다.

score[i]가 fame에 추가될 때 마다, sort 함수를 이용해 정렬하고 명예의 전당 최하위 점수 (0번째 데이터)를 answer[i]에 저장한다.

  1. 명예의 전당 fame ArrayList 선언
  2. score의 length만큼 회차를 돌면서 명예의 전당(fame)에 점수 추가
    2-1. fame에 저장된 데이터 수(size)가 k보다 작다면, fame에 score[i]을 add하고, 정렬한 다음 최하위 점수(fame.get(0))를 answer[i]에 저장.
    2-2. size가 k와 같으면, 일단 fame에 score[i]를 add하고 정렬한 다음, 명예의 전당 목록의 점수의 개수 범위를 벗어나는 fame의 0번째 데이터를 지운다. 그 후에 최하위 점수(fame.get(0))을 answer[i]에 저장.

🔓 코드

import java.util.ArrayList;
import java.util.Collections;
class Solution {
    public int[] solution(int k, int[] score) {
        int[] answer = new int[score.length];
        
        ArrayList<Integer> fame = new ArrayList<>();
        for (int i = 0; i < score.length; i++) {
			if (fame.size() < k) {
				fame.add(score[i]);
				Collections.sort(fame);
				answer[i] = fame.get(0);
			} else if (fame.size() == k) {
				fame.add(score[i]);
				Collections.sort(fame);
				fame.remove(0);
				answer[i] = fame.get(0);
			}
			
		}
        
        return answer;
    }
}

0개의 댓글