링크 : https://school.programmers.co.kr/learn/courses/15009/lessons/121688
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
신입사원의 능력치가 들어있는 ability라는 데이터가 있습니다.
신입사원 2명을 짝지어 교육시키면 두 신입사원 모두 능력치가 둘의 합이 됩니다.
즉, 능력치가 3과 7인 신입사원을 같이 교육시키면 두 사원의 능력치가 모두 10이 됩니다.
한번 교육된 사람도 다시 교육 시킬 수 있습니다.
신입사원의 능력치 총합을 최소화 시키도록 교육하면, 능력치의 총합이 몇인지 구하세요.
아이디어
가장 능력치가 낮은 2명을 계속 더하면 최소 값이 됩니다.
코드
#include <bits/stdc++.h>
using namespace std;
int solution(vector<int> ability, int number) {
int answer = 0;
priority_queue<int, vector<int>, greater<int>> pq;
for(const auto& a : ability)
{
pq.push(a);
}
for(int i = 0; i < number; ++i)
{
int first = pq.top(); pq.pop();
int second = pq.top(); pq.pop();
int teach = first+second;
pq.push(teach); pq.push(teach);
}
while(!pq.empty())
{
answer += pq.top();
pq.pop();
}
return answer;
}
'알고리즘' 카테고리의 다른 글
프로그래머스 - 방문길이 (0) | 2024.05.27 |
---|---|
프로그래머스 - [1차]캐시 (0) | 2024.05.27 |
프로그래머스 - 모음사전 (0) | 2024.05.15 |
프로그래머스 - 과제 진행하기 (0) | 2024.05.08 |
프로그래머스 - 가장 많이 받은 선물 (0) | 2024.05.06 |