본문 바로가기
프로그래머스/[프로그래머스 - JAVA] Lv.1

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

by 코딩하는 흰둥이 2023. 4. 8.
반응형


  • 내 풀이
import java.util.*;
class Solution {
    public int[] solution(int k, int[] score) {
        int[] answer = {};
        
        // score 만큼 진행되기때문에 
        answer = new int[score.length];

        List<Integer> list = new ArrayList<>();
        for(int i = 0; i<score.length; i++){
        // list에 요일 순서대로 값을 넣어줌
            list.add(score[i]);
            
        // Collection.reverse를 바로 하면 제대로 된 역순이 되지 않음
        // 그래서 sort해서 오름차순으로 변경하고 역순으로 다시 변경함
            Collections.sort(list);
            Collections.reverse(list);
            
        // list.size가 찾으려는 k번째만큼 존재한다면
            if(list.size() >= k){
                answer[i] = list.get(k-1);
            }else{
            // 존재하지 않는다면 가지고 있는 점수 중 최하위를 return
                int min = list.get(0);
                for (int j = 0; j < list.size(); j++) {
                    min = Math.min(min, list.get(j));
                }
                answer[i] = min;
            }
        }
        return answer;
    }
}

어려운 문제는 아닌데

항상 느끼는거지만 문제를 참 이상하게 낸다

 

  • 다른 사람 풀이
import java.util.*;

class Solution {
    public int[] solution(int k, int[] score) {
        int[] answer = new int[score.length];

        PriorityQueue<Integer> priorityQueue = new PriorityQueue<>();

        int temp = 0;

        for(int i = 0; i < score.length; i++) {

            priorityQueue.add(score[i]);
            if (priorityQueue.size() > k) {
                priorityQueue.poll();
            }

            answer[i] = priorityQueue.peek();
        }



        return answer;
    }
}

많은 분들이 PriorityQueue 라는 class 를 사용하여 예제를 풀이하였다

PriorityQueue : 우선순위 큐 라고 하여 우선순위가 높은것을 먼저 출력해준다.

댓글