[BOJ 13975 / C++] 파일 합치기 3 (우선순위 큐)

2025. 8. 6. 16:55·코딩테스트/BOJ

문제링크: https://www.acmicpc.net/problem/13975

 

1. 코드

#include <bits/stdc++.h>
using namespace std;

using ll = long long;

int main() {
    ios::sync_with_stdio(0); cin.tie(0);

    int t;
    cin >> t;

    while (t--) {
        int k;
        cin >> k;

        priority_queue<ll, vector<ll>, greater<ll>> pq;
        for (int i = 0; i < k; i++) {
            int inp;
            cin >> inp;
            pq.push(inp);
        }

        ll cost = 0;
        while (pq.size() >= 2) {
            ll a = pq.top(); pq.pop();
            ll b = pq.top(); pq.pop();

            cost += (a+b);
            pq.push(a+b);
        }
        cout << cost << '\n';
    }
}

 

 

2. 시간복잡도

k = 10^6 이고, 파일 크기는 10^4이므로 int overflow가 발생할 수 있다. 따라서 long long을 사용해야한다. 우선순위 큐의 push, pop은 lgn에 가능하므로 10^6 * 20 < 10^8으로 시간제한 2초 안에 수행가능하다.

 

 

3. 분석

그리디 접근을 해야한다. 가장 작은 파일의 크기부터 합해서 우선순위 큐에 다시 집어 넣는 방식으로 cost를 계산한다. 

허프만 코드 알고리즘과 유사하다.

pq에서 2개씩 뽑아서 다시 계산한 후 집어넣으므로 pq.size >= 2 일 때까지 수행하면 된다.

 

 

'코딩테스트 > BOJ' 카테고리의 다른 글

[BOJ 2606 / C++] 바이러스 (그래프)  (0) 2025.08.12
[BOJ 10989 / C++] 수 정렬하기 3 (정렬)  (1) 2025.08.10
[BOJ 14891 / C++] 톱니바퀴 (시뮬레이션)  (0) 2025.08.04
[BOJ / C++] 홍익 투어리스트 (이진검색트리)  (0) 2025.08.03
[BOJ / C++] 이친수 (다이나믹 프로그래밍)  (0) 2025.08.03
'코딩테스트/BOJ' 카테고리의 다른 글
  • [BOJ 2606 / C++] 바이러스 (그래프)
  • [BOJ 10989 / C++] 수 정렬하기 3 (정렬)
  • [BOJ 14891 / C++] 톱니바퀴 (시뮬레이션)
  • [BOJ / C++] 홍익 투어리스트 (이진검색트리)
sophon
sophon
sophon 님의 블로그 입니다.
  • sophon
    sophon 님의 블로그
    sophon
    • 카테고리 (174) N
      • 컴퓨터공학 (36)
        • 데이터베이스 (19)
        • 네트워크 (15)
        • 기타 이슈 (2)
      • 프로젝트 (17) N
        • Java (8)
        • Spring (4)
        • Docker (4)
        • AI Agent (1) N
      • 코딩테스트 (96) N
        • BOJ (74)
        • 프로그래머스 (7)
        • 프로그래머스 SQL (13) N
        • PS Snippets (2)
      • 🌱 잡담 (22)
        • 자격증 (7)
        • 좋은 시 모음 (12)
        • 책과 영화 (3)
        • 기록 (0)
  • 전체
    오늘
    어제
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
sophon
[BOJ 13975 / C++] 파일 합치기 3 (우선순위 큐)
상단으로

티스토리툴바