C++/programmers 코딩테스트(level 3) C++

[C/C++] programmers Level 3 야근 지수

CE : 하랑 2023. 10. 28. 09:48

 

 

 

코드

 

#include <vector>
#include <queue> // 큐
#include <cmath> // pow -> 거듭제곱

using namespace std;

long long solution(int n, vector<int> works) {
    long long answer = 0;
    priority_queue<int> p_q(works.begin(), works.end()); // 내림차순 우선순위 큐
    
    for(int i=0;i<n;i++){
        if(p_q.top()>0){ // 일의 작업량이 0보다 작을 수는 없다.
            int num=p_q.top();
            p_q.pop();
            p_q.push(num-1); // n시간 만큼 한 작업량 빼줌
        }
    }
    
    while(!p_q.empty()){ //  야근 피로도는 야근을 시작한 시점에서 남은 일의 작업량을 제곱하여 더한 값
        answer=answer+pow(p_q.top(),2);
        p_q.pop();
    }
    
    return answer;
}