코테/프로그래머스

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

imname1am 2023. 3. 13. 17:49
반응형

🔺 문제

 

프로그래머스

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

programmers.co.kr

 

🔺 코드

 

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

프로그래머스 - 명예의 전당(1) : Java https://school.programmers.co.kr/learn/courses/30/lessons/138477?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤

devmoony.tistory.com

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(list.size() < k) {
                list.add(score[i]); 
            } else {
                if(list.get(0) < score[i]) {
                    list.set(0, score[i]);
                }
            }
            
            Collections.sort(list);
            answer[i] = list.get(0);      
        }

        // 전당의 최하위 점수
        return answer;
    }
}

명예의 전당을 ArrayList로 받고.

반복문을 k보다 작을 때와 그 이외의 경우로 나눠서 구해줘야지- 할 생각은 했는데

정렬도 해야 하는데 어디서 하지,,? 이런 생각하다가

어영부영 고민하다가 못 풀어서 다른 분 코드를 보고 해결했다....  

 

Collections.sort(list)의 위치! 리스트에 값 넣고 바로 정렬...


🔺 다른 풀이들

 

프로그래머스

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

programmers.co.kr

import java.util.*;

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

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

        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<Integer> priorityQueue = new PriorityQueue<>();    // 우선순위 낮은 순 정렬

priorityQueue.add(score[i]);    // 값 score[i] 추가
priorityQueue.poll();                   // 첫 번째 값 반환 · 제거
priorityQueue.peek();                // 첫 번째 값 참조

+ 우선순위가 높은 숫자 순으로 정렬하고 싶으면 이렇게...

PriorityQueue<Integer> priorityQueue = new PriorityQueue<>(Collections.reverseOrder()); 


(참고)

 

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

츄르사려고 코딩하는 코집사입니다. 1. [프로그래머스] 명예의 전당 (1) 자바(JAVA) 1) 문제 제목 : 명예의 전당 (1) 2) 문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/138477?language=java 프로그래

yongku.tistory.com

 

 

✔ 우선순위 큐 (Priority Queue)

 

[Java] Priority Queue(우선 순위 큐)

PriorityQueue란 우선순위 큐로써 일반적인 큐의 구조 FIFO(First In First Out)를 가지면서, 데이터가 들어온 순서대로 데이터가 나가는 것이 아닌 우선순위를 먼저 결정하고 그 우선순위가 높은 데이터

velog.io

 

[Java] PriorityQueue(우선순위 큐) 클래스 사용법 & 예제 총정리

우선순위 큐(Priority Queue)란? 일반적으로 큐는 데이터를 일시적으로 쌓아두기 위한 자료구조로 스택과는 다르게 FIFO(First In First Out)의 구조 즉 먼저 들어온 데이터가 먼저 나가는 구조를 가집니다

coding-factory.tistory.com

 

반응형