새소식

알고리즘/문제

[BOJ/백준 - 1715] 카드 정렬하기

  • -

문제 출처: https://www.acmicpc.net/problem/1715

 

1715번: 카드 정렬하기

정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장

www.acmicpc.net


public class BOJ_1715 {
public static void main(String[] args) throws IOException {
// INPUT & INIT
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int len = Integer.parseInt(br.readLine());
PriorityQueue<Integer> pq = new PriorityQueue<>();
for(int i=0; i<len; i++){
pq.add(Integer.parseInt(br.readLine()));
}
// CALCULATE
int a = 0;
int sum = 0;
while(!pq.isEmpty()){
int num = pq.poll();
if(a==0){
a = num;
}else{
a += num;
sum+=a;
pq.add(a);
a = 0;
}
}
// OUTPUT
System.out.println(sum);
}
}
view raw BOJ_1715.java hosted with ❤ by GitHub

우선순위 큐를 이용해 풀면 쉽게 풀 수 있다

 

큐가 비어버릴 때 까지

숫자를 뽑아내면서 뽑아낸 숫자가 2개면 그 두개를 더한다

더한 수를

1. 답에다가 더함

2. 큐에 집어넣음

반복한다

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.