SniKuz
스니커즈 정리공간
SniKuz
  • 정리공간 (116)
    • 강의 (35)
      • OS (12)
      • 컴퓨터구조 (5)
      • 컴퓨터네트워크 (6)
      • 컴퓨터 그래픽스 (12)
    • 프로젝트 (8)
      • 애니메이션 스티커(Android) (1)
      • 2023GMTK (1)
      • OTT 게임 (2)
      • 3D MORPG (4)
    • Unity (3)
      • Memory (3)
    • 디자인패턴 (8)
    • 활동 정리 (4)
    • 알고리즘 (48)
    • 기타기록 (6)
      • 여행,음식 (4)
      • 잡다지식 (2)

블로그 메뉴

  • ✨ 깃허브

공지사항

인기 글

태그

  • ISTQB
  • programmers
  • 니

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
SniKuz

스니커즈 정리공간

알고리즘

프로그래머스 - PCCP 모의고사 2회 - 신입사원 교육

2024. 5. 26. 16:14

링크 : 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
    '알고리즘' 카테고리의 다른 글
    • 프로그래머스 - 방문길이
    • 프로그래머스 - [1차]캐시
    • 프로그래머스 - 모음사전
    • 프로그래머스 - 과제 진행하기
    SniKuz
    SniKuz
    게임과 관련된 개발, 디자인 등등 + 일상공간

    티스토리툴바