Algorithm/이코테

26.카드 정렬

마닐라 2022. 1. 10. 14:33

📍 문제 설명

💡 접근

제일 작은 카드 묶음 끼리 묶어나가면서 합을 누적해나가는 문제

 

👩‍💻 코드

import java.util.*;

public class Main {

    public static void main(String[] args) {
        Scanner kb = new Scanner(System.in);
        int n = kb.nextInt();

        PriorityQueue<Integer> pq = new PriorityQueue<>();
        int[] arr = new int[n];
        for(int i = 0; i < n; i++) {
            pq.offer(kb.nextInt());
        }

        int result = 0;
        //제일 작은 수들끼리 합쳐나가야 비교 횟수가 최소가 된다.

        while(pq.size() != 1) {
            int a = pq.poll();
            int b = pq.poll();

            int sum = a+b;
            //해당 합친값을 따로 기록해놓고 우선순위 큐에 넣기
            result += sum;
            pq.offer(sum);
        }
        System.out.println(result);

    }
}

'Algorithm > 이코테' 카테고리의 다른 글

28.고정점 찾기  (0) 2022.01.10
27.정렬된 배열에서 특정 수의 개수 구하기  (0) 2022.01.10
25.실패율  (0) 2022.01.10
24.안테나  (0) 2022.01.10
23.국영수  (0) 2022.01.10