코딩테스트 연습 - 야근 지수 | 프로그래머스 스쿨 (programmers.co.kr)
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
매 시간마다 가장 크기가 큰 작업량을 -1씩 해주면 된다. priority_queue를 이용하면 가장 큰 값이 맨 위로 올라오므로 뽑고 -1 해주고 다시 집어넣어주면 된다. while(n--)만 할시에 queue가 비어있을 때에도 실행이 되므로 !pq.empty()를 붙여주자.
#include<iostream>
#include<vector>
#include<queue>
using namespace std;
long long solution(int n, vector<int> works) {
long long answer = 0;
priority_queue<int> pq;
for (int i = 0; i < works.size(); i++) {
pq.push(works[i]);
}
while (n--&&!pq.empty()) {
int val = pq.top();
pq.pop();
if (--val != 0) {
pq.push(val);
}
}
while (!pq.empty()) {
long long val = pq.top();
pq.pop();
answer += val * val;
}
cout << answer;
return answer;
}
'코딩테스트 > C++' 카테고리의 다른 글
[프로그래머스 Level 3] 등굣길(C++) (0) | 2024.06.19 |
---|---|
[프로그래머스 Level 3] 최고의 집합(C++) (1) | 2024.06.18 |
[프로그래머스 Level 3] 이중우선순위큐(C++) (0) | 2024.06.09 |
[프로그래머스 Level 3] 네트워크(C++) (1) | 2024.06.07 |
[프로그래머스 Level 2] 도넛과 막대 그래프(C++) (0) | 2024.05.29 |