<BOJ>1715번: 카드 정렬하기

문제


1715번: 카드 정렬하기

접근

  • PriorityQueue를 사용하면 간단하게 풀 수 있는 문제이다.
  • 입력 값이 오름차순으로 정렬된 구조로 저장되게 하되, 첫 두 수를 합하고 그 합한 결과 또한 저장해야 함. 이 과정을 원소가 1개가 남을 때 까지 반복하면 된다.

내 코드

import java.io.*;
import java.util.PriorityQueue;

public class Main {
    static PriorityQueue<Long> pq = new PriorityQueue<>();

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        long result = 0;
        while (n-- > 0) {
            pq.add(Long.parseLong(br.readLine()));
        }
        while (pq.size() > 1) {
            long a = pq.poll();
            long b = pq.poll();

            result += a + b;
            pq.add(a + b);
        }

        System.out.println(result);
    }
}

좋은 웹페이지 즐겨찾기