-
[프로그래머스/Level 3] 야근 지수 (C++)알고리즘 문제풀이/프로그래머스 2021. 2. 25. 16:36
programmers.co.kr/learn/courses/30/lessons/12927
문제에서 야근 지수를 최소화 하기 위해서는 작업량의 최대값을 매번 줄여가야합니다. 이러한 최대값을 구하기 위해서 우선순위 큐를 이용한다면, 문제를 쉽게 해결할 수 있습니다.
#include <string> #include <vector> #include <queue> using namespace std; long long solution(int n, vector<int> works) { long long answer = 0; priority_queue<int, vector<int>, less<int> > pq; for(auto w : works) { pq.push(w); } while(n--) { if(pq.top() > 0) { int num = pq.top(); pq.pop(); pq.push(--num); } } while(!pq.empty()) { long long num = pq.top(); pq.pop(); answer += num * num; } return answer; }
'알고리즘 문제풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/Level 3] 멀리 뛰기 (C++) (0) 2021.02.27 [프로그래머스/Level 3] 스타 수열 (C++) (0) 2021.02.26 [프로그래머스/Level 3] 불량 사용자 (C++) (0) 2021.02.24 [프로그래머스/Level 2] 방문 길이 (C++) (0) 2021.02.24 [프로그래머스/Level 3] 거스름돈 (C++) (0) 2021.02.22