https://school.programmers.co.kr/learn/courses/30/lessons/12927
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
왜 이게 레벨3이지? 레벨 1~2정도 될듯하다.
우선순위 힙 사용한 풀이
#include <string>
#include <vector>
#include<queue>
#include<iostream>
using namespace std;
//우선순위 힙으로 진행해서
//front(), pop()후 front에 n의 1값 씩 차감 후 push
//front값이 0이면 pop
//언제까지 n이 0이될때까지 n이 0 되기 전 q 사이즈가 0이 되면 남은 작업량 없어서 피로도인 result = 0;
long long solution(int n, vector<int> works) {
long long answer = 0;
priority_queue<int>q;
for(int y= 0; y < works.size(); ++y){
q.push(works[y]);
}
while(n!=0 && q.size() !=0){
int t = q.top();
q.pop();
t -= 1;
n--;
if(t == 0) continue; // t가 0이면 작업량 없으니 q에 넣을 필요없음
q.push(t);
}
if(q.size() == 0) return answer = 0;
while(!q.empty()){
int t = q.top();
q.pop();
answer = answer + (t*t);
}
return answer;
}'프로그래머스 > 코딩테스트' 카테고리의 다른 글
| lv3 ) 섬 연결하기 [다시] (0) | 2026.05.29 |
|---|---|
| lv3 ) 기지국 설치 [다시] (0) | 2026.05.28 |
| lv2) 올바른괄호 [] (0) | 2026.05.27 |
| lv4) 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 [틀림, 다시] (0) | 2026.05.27 |
| lv2) 영어 끝말잇기 (0) | 2026.05.26 |
