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;
}

+ Recent posts