[c++/프로그래머스] 야근 지수

조히·2023년 3월 8일
0

PS

목록 보기
41/82

문제 링크

야근 지수

풀이

priority queue로 푸는 문제. 근데 이걸로 안풀고 그냥 제일 큰 값 찾아서 하나씩 줄이면 될 것 같긴하다.

  1. workspq에 넣고 n0이 될 때까지 제일 큰 값 (pq.top())을 하나씩 줄인다.
  2. top()값은 pop하고 갱신된 값은 push한다.
  3. pq가 빌 때까지 answerpq.top()^2 값을 더해준다.

코드

#include <string>
#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>0)
    {
        int tmp = pq.top();
        pq.pop();
        if(tmp==0) return 0;
        
        tmp--;
        pq.push(tmp);
        n--;
    }
    
    while(!pq.empty())
    {
        answer+=pq.top()*pq.top();
        pq.pop();
    }
    
    return answer;
}
profile
Juhee Kim | Game Client Developer

0개의 댓글