프로그래머스

[코딩테스트 연습] 명예의 전당(1) - Lv.1

yujin0517 2023. 8. 3. 17:58

명예의 전당

 

[문제]

https://school.programmers.co.kr/learn/courses/30/lessons/138477

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

[문제 풀이]

List를 사용하여 문제를 해결했다. 기본적으로 List에 값이 추가될 때마다 정렬을 진행해 준다.

List에 들어 있는 요소의 개수가 k개 보다 작다면 계속 List에 score 값을 추가해 준다. 

List에 들어 있는 요소의 개수가 k개 이상일 경우 List의 첫 번째 값과 점수를 비교해서 List에 추가 여부를 결정한다. 

최종적으로 반환되는 배열에는 항상 List의 첫 번째 값을 넣어준다. 

 

[코드]

import java.util.*;

class Solution {
    public int[] solution(int k, int[] score) {
        int[] answer = new int[score.length];
        List<Integer> list = new ArrayList<>();

        for(int i = 0; i < score.length; i++) {
            if(i < k) {
                list.add(score[i]);
            } else {
                if(score[i] > list.get(0)) {
                    list.remove(0);
                    list.add(score[i]);
                }
            }

            Collections.sort(list);
            answer[i] = list.get(0);
        }

        return answer;
    }
}

 

 

2023.08.03