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 체크 안 했음