[Algorithm] 명예의 전당

2025. 1. 2. 11:08·Algorithm/Practice

문제 설명

"명예의 전당"이라는 TV 프로그램에서는 매일 1명의 가수가 노래를 부르고, 시청자들의 문자 투표수로 가수에게 점수를 부여합니다. 매일 출연한 가수의 점수가 지금까지 출연 가수들의 점수 중 상위 k번째 이내이면 해당 가수의 점수를 명예의 전당이라는 목록에 올려 기념합니다. 즉 프로그램 시작 이후 초기에 k일까지는 모든 출연 가수의 점수가 명예의 전당에 오르게 됩니다. k일 다음부터는 출연 가수의 점수가 기존의 명예의 전당 목록의 k번째 순위의 가수 점수보다 더 높으면, 출연 가수의 점수가 명예의 전당에 오르게 되고 기존의 k번째 순위의 점수는 명예의 전당에서 내려오게 됩니다. 

 

이 프로그램에서는 매일 "명예의 전당"의 최하위 점수를 발표합니다. 예를 들어, k = 3이고, 7일 동안 진행된 가수의 점수가 [10, 100, 20, 150, 1, 100, 200]이라면, 명예의 전당에서 발표된 점수는 아래의 그림과 같이 [10, 10, 10, 20, 20, 100, 100]입니다.

명예의 전당 목록의 점수의 개수 k, 1일부터 마지막 날까지 출연한 가수들의 점수인 score가 주어졌을 때, 매일 발표된 명예의 전당의 최하위 점수를 return하는 solution 함수를 완성해주세요.

 

문제 유형

  • 우선순위 큐 정렬

 

의사코드

  1. 우선순위 큐 변수(pq)를 선언한다.
  2. [반복문] k 또는 scores 길이 중 작은 값만큼 반복한다.
    1. pq에 scores 요소를 저장한다.
    2. answer에 pq의 최소값을 저장한다.
  3. [반복문] scores  길이만큼 반복한다.
    1. pq에 scores 요소를 저장한다.
    2. pq의 가장 최하위값을 제거한다.
    3. answer에 pq의 최속값을 저장한다.
  4. 결과값(answer)를 반환한다.

 

코드 작성

#include <vector>
#include <queue>
#include <algorithm>

using namespace std;

vector<int> solution(int k, vector<int> scores) {
    vector<int> answer;
    priority_queue<int, vector<int>, greater<int>> pq;
    
    int minLoop = min(static_cast<int>(scores.size()), k);
    for (int i = 0; i < minLoop; i++)
    {
        pq.push(scores[i]);
        answer.push_back(pq.top());
    }
    
    for (int i = k; i < scores.size(); i++)
    {
        pq.push(scores[i]);
        pq.pop();
        answer.push_back(pq.top());
    }
        
    return answer;
}

'Algorithm > Practice' 카테고리의 다른 글

[Algorithm] 모의고사  (0) 2025.01.06
[Algorithm] 과일 장수  (0) 2025.01.06
[Algorithm] 콜라 문제  (1) 2025.01.02
[Algorithm] 푸드 파이트 대회  (0) 2024.12.31
[Algorithm] 가장 가까운 같은 글  (0) 2024.12.31
'Algorithm/Practice' 카테고리의 다른 글
  • [Algorithm] 모의고사
  • [Algorithm] 과일 장수
  • [Algorithm] 콜라 문제
  • [Algorithm] 푸드 파이트 대회
DevColIn
DevColIn
복잡함을 단순하게
  • DevColIn
    심플한 코딩생활
    복잡함을 단순하게
  • 전체
    오늘
    어제
    • 전체보기 (223)
      • Unreal 부트캠프 (49)
        • TIL (34)
        • 사전캠프 (7)
        • 본캠프 (8)
      • Unrael (10)
        • 환경설정 (0)
        • Basic (19)
        • Component (5)
        • GAS (GameplayAbilitySystem) (3)
        • AI (2)
        • Implement (10)
        • UI (1)
        • Error (1)
        • Network (2)
        • Tip (1)
      • Level Design (5)
      • Math (1)
      • Design Pattern (16)
      • Computer Science (2)
        • Network (1)
        • Database (1)
      • Algorithm (79)
        • Basic (4)
        • Practice (74)
      • C++ (4)
        • Basic (4)
      • Tool (0)
      • Game (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    AI
    basic
    내일배움캠프
    KPT회고
    unrealengine
    Algorithm
    액터
    Animation
    Til
    게임동기화
    퀘스트
    GameplayEffect
    actor
    사전캠프
    소프트 레퍼런신
    component
    c++
    디자인 패턴
    gas
    디자인패턴
    하드 레퍼런싱
    Design Pattern
    레벨디자인
    tsoftobjectptr
    본캠프
    알고리즘
    assetmanager
    unreal
    DesignPattern
    Implement
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
DevColIn
[Algorithm] 명예의 전당
상단으로

티스토리툴바