코딩 테스트

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

우루쾅 2024. 2. 4. 19:35
728x90
반응형
SMALL

오랜만에 코딩테스트를 시작하고 가장 오래 걸린 문제...

 

각 리스트를 정렬하고 k 번째의 값을 뽑아내면 되는 문제인데,

맨 처음 문제를 읽을 때 머릿속으로 정리가 되지 않아서 식을 생각해내지 못했다.

 

그리구 ArrayList를 사용해야하는 문제인데 일반 배열을 사용해서 문제를 푸려고 했다가

괜히 더 빙글빙글 돌았다...

 

다른 사람들의 답을 보니 다양한 답들이 많았는데

대부분 ArrayList()에 값을 넣은 뒤 정렬을 하고 k 값과 비교해서 list.remove(0) 하는 방식을 많이 사용하더라...

 

배열에 대해 다양한 방법을 고민할 수 있는 문제였다

 

정답

import java.util.*;
import java.util.Arrays;

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

        for (int i = 0; i < score.length; i++) {
            list.add(score[i]);
            Collections.sort(list);
            if (list.size() <= k) {
                answer[i] = list.get(0);
            } else {
                answer[i] = list.get(list.size()-k);
            }
        }
        return answer;
    }
}

 

 

 

 

 

출처

프로그래머스 - https://school.programmers.co.kr/learn/courses/30/lessons/138477

 

728x90
반응형
LIST