프로그래머스 명예의 전당 (1) JAVA 풀이 (우선순위 큐, PriorityQueue)

2026. 6. 5. 23:32·코테(Solved.ac + Programmers)
728x90

📌 문제 개요

매일 가수의 점수가 발표된다.

명예의 전당에는 항상 상위 k개의 점수만 유지하며, 매일 명예의 전당에 등록된 점수 중 가장 낮은 점수를 발표한다.

주어진 score 배열에 대해 매일 발표되는 최하위 점수를 구하는 문제이다.


📌 접근 방법

처음에는 모든 점수를 저장한 후 정렬을 반복하는 방법을 생각할 수 있다.

하지만 점수가 들어올 때마다 정렬을 수행하면 비효율적이다.

따라서 현재 명예의 전당에 포함된 점수들만 관리하는 PriorityQueue(최소 힙)를 사용한다.


📌 처리 순서

  1. 오늘의 점수를 힙에 추가
  2. 힙 크기가 k를 초과하면 최솟값 제거
  3. 힙의 최솟값(peek)을 정답 배열에 저장

📌 핵심 아이디어

명예의 전당에는 항상 상위 k개의 점수만 존재해야 한다.

따라서 최소 힙의 크기를 k로 유지하면 된다.

예를 들어 k = 3일 때

10 추가
[10]

100 추가
[10, 100]

20 추가
[10, 20, 100]

150 추가
[10, 20, 100, 150]
↓
가장 작은 10 제거

[20, 100, 150]

결과적으로 힙에는 항상 상위 3개의 점수만 남는다.

그리고 힙의 최솟값이 곧 명예의 전당 최하위 점수이다.


📌전체 코드

import java.util.PriorityQueue;

class Solution {
    public int[] solution(int k, int[] score) {

        int[] answer = new int[score.length];

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

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

            pq.offer(score[i]);

            if (pq.size() > k) {
                pq.poll();
            }

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

        return answer;
    }
}

📄 정리

  • PriorityQueue(최소 힙) 사용
  • 힙에는 항상 상위 k개의 점수만 유지
  • k개를 초과하면 가장 작은 점수 제거
  • peek() 값이 매일 발표되는 명예의 전당 최하위 점수
  • 상위 K개 유지 문제의 대표적인 PriorityQueue 활용 문제
728x90

'코테(Solved.ac + Programmers)' 카테고리의 다른 글

프로그래머스 비밀지도 JAVA 풀이 (비트연산, 문자열 변환)  (0) 2026.06.09
프로그래머스 모의고사 JAVA 풀이 (완전탐색)  (0) 2026.06.06
프로그래머스 콜라 JAVA 풀이 (구현, 시뮬레이션)  (0) 2026.06.04
카드 뭉치 JAVA 풀이 (구현, 문자열)  (0) 2026.06.03
프로그래머스 숫자 문자열과 영단어 JAVA 풀이 (문자열, replace)  (0) 2026.06.02
'코테(Solved.ac + Programmers)' 카테고리의 다른 글
  • 프로그래머스 비밀지도 JAVA 풀이 (비트연산, 문자열 변환)
  • 프로그래머스 모의고사 JAVA 풀이 (완전탐색)
  • 프로그래머스 콜라 JAVA 풀이 (구현, 시뮬레이션)
  • 카드 뭉치 JAVA 풀이 (구현, 문자열)
PUSH → MERGE → DEPLOY
PUSH → MERGE → DEPLOY
데이터 흐름과 운영 자동화를 설계하는 백엔드 개발자
  • PUSH → MERGE → DEPLOY
    Coding Dongin
    PUSH → MERGE → DEPLOY
  • 전체
    오늘
    어제
    • MEUN
      • 코테(Solved.ac + Programmers)
      • BootCamp(JAVA)
      • JAVA
      • SpringBoot
      • JavaScript
      • JSP
      • DB(SQL)
      • React
      • HTML_CSS
      • jQuery
      • SCSS
      • GSAP
      • 설치 + 꿀팁
      • 정보처리기사 오답노트
      • 정보처리기사 기출문제
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GIT
  • 공지사항

  • 인기 글

  • 태그

    dp
    level1
    백엔드개발자
    springboot
    정보처리기사 실기 기출문제
    정보처리기사
    정처기오답노트
    프로그래머스
    배열
    Level2
    자바
    java
    level0
    기출문제
    백준
    브루트포스
    알고리즘
    코딩테스트
    정처기실기
    완전탐색
    정렬
    실기
    시뮬레이션
    구현
    solved.ac
    피보나치
    자료구조
    문자열
    수학
    정처기
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.4
PUSH → MERGE → DEPLOY
프로그래머스 명예의 전당 (1) JAVA 풀이 (우선순위 큐, PriorityQueue)
상단으로

티스토리툴바