반응형
programmers.co.kr/learn/courses/30/lessons/12927?language=cpp
priority queue를 이용해 풀었습니다.
풀이방법
1. 작업시간들을 모두 max heap priority queue에 넣어줍니다.
2. n만큼 pq.top()은 항상 그 다음 최대의 작업시간이므로 해당 값이 양수일때 1씩 빼준 후 pop하고 1줄어든 값을 다시 push 해줍니다.
3. pq에 있는 원소를 모두 빼주면서 야근 지수를 계산해줍니다.
Code
#include <bits/stdc++.h>
using namespace std;
long long solution(int n, vector<int> works) {
long long answer = 0;
priority_queue<int,vector<int>> pq;
for(int i = 0; i < works.size(); i++){
pq.push(works[i]);
}
for(int i = 0; i < n; i++){
if(pq.top() > 0){
long long t = pq.top() - 1;
pq.pop();
pq.push(t);
}
}
while(!pq.empty()){
long long t = pq.top();
pq.pop();
answer += pow(t,2);
}
return answer;
}
'Algorithm > Implementation' 카테고리의 다른 글
(C++) - 백준(BOJ) 15726번 : 이칙연산 답 (0) | 2021.02.07 |
---|---|
(C++) - 백준(BOJ) 1063번 : 킹 답 (0) | 2021.02.05 |
(C++) - 프로그래머스(고득점 kit - 스택/큐) : 주식가격 답 (0) | 2021.02.01 |
(C++) - 프로그래머스(월간 코드 챌린지 시즌 1) : 삼각 달팽이 답 (0) | 2021.02.01 |
(C++) - 백준(BOJ) 2346번 : 풍선 터뜨리기 답 (0) | 2021.01.31 |