코딩테스트/BOJ

[BOJ] 1715 카드 정렬하기 - JAVA

5월._. 2023. 2. 9.
728x90

1. 문제

 

1715번: 카드 정렬하기

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

www.acmicpc.net


2. 풀이

우선순위큐를 이용해서 오름차순 정렬했다.

한 번에 두 요소씩 뽑아서 합친 결과를 1)answer에 더하고 2) pq에 offer했다.

마지막에 answer를 출력한다.

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

public class BOJ_1715_카드정렬하기 {
   public static void main(String[] args) throws IOException {
      BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
      int N = Integer.parseInt(in.readLine());
      PriorityQueue<Integer> pq = new PriorityQueue<>();
      for(int i=0;i<N;i++){
         pq.offer(Integer.parseInt(in.readLine()));
      }

      int answer = 0;
      int tmp;
      while(pq.size()>1){
         tmp = pq.poll()+pq.poll();
         answer += tmp;
         pq.offer(tmp);
      }

      System.out.println(answer);
   }
}

3. 결과

'코딩테스트 > BOJ' 카테고리의 다른 글

[BOJ] 1062 가르침 - JAVA  (0) 2023.02.12
[BOJ] 2161 카드1 - JAVA  (0) 2023.02.10
[BOJ] 1068 트리 - JAVA  (0) 2023.02.08
[BOJ] 1963 소수경로 - JAVA  (0) 2022.12.17
[BOJ] 13398 연속합2 - JAVA  (0) 2022.12.16

댓글