🟦/백준

[실버 1] 카드 합체 놀이

진뚱이용 2023. 8. 17. 09:36

https://www.acmicpc.net/problem/15903

 

15903번: 카드 합체 놀이

첫 번째 줄에 카드의 개수를 나타내는 수 n(2 ≤ n ≤ 1,000)과 카드 합체를 몇 번 하는지를 나타내는 수 m(0 ≤ m ≤ 15×n)이 주어진다. 두 번째 줄에 맨 처음 카드의 상태를 나타내는 n개의 자연수 a1,

www.acmicpc.net

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

class Main {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		StringTokenizer st;

		PriorityQueue<Long> pQ = new PriorityQueue<>();

		int n, m;

		st = new StringTokenizer(br.readLine());
		n = Integer.parseInt(st.nextToken());
		m = Integer.parseInt(st.nextToken());

		st = new StringTokenizer(br.readLine());
		for (int i = 0; i < n; i++) {
			pQ.add(Long.parseLong(st.nextToken()));
		}
		
		for(int i = 0 ; i < m ; i++) {
			long v1 = pQ.remove();
			long v2 = pQ.remove();
			pQ.add(v1+v2);
			pQ.add(v1+v2);
		}
		
		long sum = 0;
		for(long tmp : pQ)
			sum += tmp;
		
		System.out.println(sum);

	}
}

매번 작은 거 2개 고르기 우선순위 큐

Long 체크 안 했음