티스토리 뷰

문제 링크입니다 : 

 

우선 순위 큐 문제였다.

 

 

 

 

 

 

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

using namespace std;

long long solution(int n, vector<int> works) {
    long long answer = 0;
    priority_queue<int> pq;
    for(const auto work : works) {
        pq.push(work);
    }
    
    while(n != 0) {
        int first = pq.top();
        pq.pop();
        int second = pq.top();
        
        if(first == 0) {
            break;
        }
        
        if(first - second > 1) {
            int minValue = min(n, first - second);
            n -= minValue;
            pq.push(first - minValue);
        } else {
            n--;
            pq.push(first - 1);
        }
    }
    
    while(!pq.empty()) {
        int top = pq.top();
        pq.pop();
        answer += top * top;
    }
    
    
    return answer;
}

 

 

 

개발 환경 : vscode

지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함