[백준 1751 C++] 카드 정렬하기 풀이(그리디, 우선순위 큐)

2026. 2. 16. 18:37·백준

처음에는 ATM 문제처럼 sort 정렬을 생각했는데, 생각해보니 값이 계속 갱신되면서 작은 값끼리 더해야 하기때문에 한번 sort로는 부족하다.

 

(처음 오답 코드)

“항상 가장 작은 두 묶음”을 계속 골라야 하는데, 한 번 정렬하고 그대로 앞에서만 더함

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(){
    int N;
    cin >> N;
    int card[100001];
    for(int i=0; i<N; i++){
        cin >> card[i];
    }
    sort(card, card+N); 
    int sum = 0, answer = 0;
    for(int i=0; i<N-1; i++){
        sum = card[i] + card[i+1];
        card[i+1] = sum; 
        answer += sum;
    }

    cout << answer;

}

 

우선순위 큐를 사용해서 최소 힙은 먼저 꺼내도록 하자!

 

정답 코드

#include <iostream>
#include <queue>
using namespace std;

int main(){
    int N, answer = 0;
    priority_queue<
                    int,         // 자료형
                    vector<int>, // 내부 컨테이너
                    greater<int> // 정렬 기준 - 작은 값이 우선순위 높음
                    > pq; 
    // 작은 값 먼저 꺼냄
    cin >> N;
    if(N == 1){
        cout << 0;
        return 0;
    }
    for(int i=0; i<N; i++){
        int temp;
        cin >> temp;
        pq.push(temp);
    }

    while(pq.size() > 1){
        int a = pq.top(); pq.pop(); // 가장 작은 값 꺼냄
        int b = pq.top(); pq.pop();
        answer += a + b;
        pq.push(a + b); // 합쳐진 카드 다시 넣음
    }

    cout << answer;

}
저작자표시 비영리 변경금지 (새창열림)

'백준' 카테고리의 다른 글

[백준 1744 C++]수 묶기 풀이, vector 런타임 에러 해결  (0) 2026.02.16
[백준 2751 c++] 수 정렬하기 2 런타임 에러, 시간초과 해결  (0) 2026.01.03
[백준 2839번 C++] 설탕 배달  (0) 2025.05.07
[백준 1874번 C++] 스택 수열  (0) 2025.05.06
'백준' 카테고리의 다른 글
  • [백준 1744 C++]수 묶기 풀이, vector 런타임 에러 해결
  • [백준 2751 c++] 수 정렬하기 2 런타임 에러, 시간초과 해결
  • [백준 2839번 C++] 설탕 배달
  • [백준 1874번 C++] 스택 수열
데구르르..
데구르르..
내가 보려고 기록하는
  • 데구르르..
    데굴데굴
    데구르르..
  • 전체
    오늘
    어제
    • 분류 전체보기 (27)
      • CS STUDY (5)
        • DB (8)
      • 프로그래머스 (5)
      • 백준 (5)
      • PROJECT (2)
      • ETC (1)
      • 회고 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    ossca
    백준
    redis
    Valkey
    그리디 알고리즘
    데이터베이스설계
    SQL기초
    관계형데이터베이스
    외래키
    데이터베이스정리
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
데구르르..
[백준 1751 C++] 카드 정렬하기 풀이(그리디, 우선순위 큐)
상단으로

티스토리툴바