명예의 전당 (1)

2025. 1. 16. 11:16·코딩 테스트/프로그래머스

문제

문제 해석

- score의 길이가 1,000이므로 이중 반복문(O(N^2)까지는 사용해도 충분하다.

- score에서 명예의 전당(HallOfFame)에 기록되고 나면 명예의 전당에 정렬이 필요하다.(algorithm 헤더 사용)

0. 초기에 k일까지는 모든 출연 가수의 점수가 명예의 전당에 오르게 할 것.

1. k번째 순위의 가수 점수보다 더 높으면 
    1-1. 출연 가수의 점수가 명예의 전당에 오르게 되고
    1-2. 기존의 k번째 순위의 점수는 명예의 전당에서 내려오게 된다.

2. 명예의 전당을 정렬한다.

3. 꼴찌를 answer에 기록한다.

 

코드

#include <vector>
#include <algorithm>

using namespace std;

bool Compare(int Left, int Right)
{
    return Left >= Right;
}

vector<int> solution(int k, vector<int> score) {
    vector<int> answer;
    vector<int> HallOfFame;
    
    size_t Limit = score.size();
    for(size_t IDX = 0; IDX < Limit; ++IDX)
    {
        //0. 초기에 k일까지는 모든 출연 가수의 점수가 명예의 전당에 오르게
        if(IDX <= (k - 1))
        {
            HallOfFame.push_back(score[IDX]);
        }
        else
        {
            //1. k번째 순위의 가수 점수보다 더 높으면 
            //1-1. 출연 가수의 점수가 명예의 전당에 오르게 되고
            //1-2. 기존의 k번째 순위의 점수는 명예의 전당에서 내려오게 됩니다.
            if(score[IDX] > HallOfFame[k - 1])
            {
                HallOfFame.insert(HallOfFame.begin() + (k - 1), score[IDX]);
                HallOfFame.erase(HallOfFame.begin() + k);                
            }
        }
        
        // 명예의 전당 정렬
        sort(HallOfFame.begin(), HallOfFame.end(), Compare);
        // 꼴찌를 answer에 기록
        answer.push_back(HallOfFame.back());
    }    
    
    return answer;
}

 

 

회고

1. greater<int>()를 헷갈려서 Compare 함수를 정의해서 풀었다. 아쉬운 부분
2. 풀어보니 테스트 케이스에서 틀려서 왜인지 찾다보니 k일이 1부터 시작하는 것을 확인했고 이를 수정해서 풀었다.

 

다른 사람의 풀이

1. 벡터를 2개 정의하는 건 동일하지만 다른점은 "점수를 넣고 정렬하여 k보다 크면 나머지는 버린다.", "명예의 전당 마지막 점수를 집어넣는다."가 달랐다.
2. 우선순위 큐를 이용해 정렬을 자동화하고 큐의 첫 번째를 꼴등으로 집어넣는다.

'코딩 테스트 > 프로그래머스' 카테고리의 다른 글

과일장수  (0) 2025.01.20
카드 뭉치  (0) 2025.01.20
콜라 문제  (2) 2025.01.16
푸드 파이트 대회  (0) 2025.01.14
두 개 뽑아서 더하기  (0) 2025.01.14
'코딩 테스트/프로그래머스' 카테고리의 다른 글
  • 과일장수
  • 카드 뭉치
  • 콜라 문제
  • 푸드 파이트 대회
DevJoo1120
DevJoo1120
  • DevJoo1120
    Jin's Programming
    DevJoo1120
  • 전체
    오늘
    어제
    • 분류 전체보기 (142)
      • 포트폴리오 (7)
        • Castlevania: Aria of Sorrow.. (7)
        • [UE5] KILL Everything (0)
      • C++ (0)
      • 라이브러리 (1)
      • 다이렉트X11 (0)
      • Unreal Engine (11)
        • Unreal Document (1)
        • 이것 저것 (8)
        • UI (1)
      • 자료구조 및 알고리즘 (0)
      • 책 정리 (3)
        • 코딩 테스트 합격자 되기 C++ 편 (10)
      • 코딩 테스트 (32)
        • 프로그래머스 (32)
      • 스파르타 코딩 언리얼 1기 (9)
        • 특강 (0)
        • C++와 Unreal Engine으로 3D .. (2)
      • TIL(Today I Learned) (63)
      • 영어 공부 (0)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    코딩 테스트 합격자 되기 c++ 편
    프로그래머스
    코딩테스트
    반복문
    배열
    Study
    WINAPI
    팀 프로젝트
    코딩 테스트
    map
    Unreal Engine 5
    정렬
    책 정리
    C++
    과제
    이중 반복문
    정리
    스파르타 코딩 클럽
    Til
    문자열
  • hELLO· Designed By정상우.v4.10.5
DevJoo1120
명예의 전당 (1)
상단으로

티스토리툴바