코드
#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;
}
'C++ > programmers 코딩테스트(level 3) C++' 카테고리의 다른 글
[C/C++] programmers Level 3 단속카메라 (복습) (0) | 2023.11.08 |
---|---|
[C/C++] programmers Level 3 숫자 게임 (0) | 2023.10.31 |
[C/C++] programmers Level 3 정수 삼각형 - 참고 (0) | 2023.10.27 |
[C/C++] programmers Level 3 최고의 집합 (0) | 2023.10.19 |
[C/C++] programmers Level 3 이중우선순위큐 (0) | 2023.10.18 |