문제
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);
}
}