-
15903 카드 합체 놀이백준/우선순위 큐 2021. 10. 20. 19:35
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.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.PriorityQueue; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine(), " "); int N = Integer.parseInt(st.nextToken()); int M = Integer.parseInt(st.nextToken()); StringTokenizer st1 = new StringTokenizer(br.readLine(), " "); PriorityQueue<Long> card = new PriorityQueue<>(); for(int i =0; i<N;i++) { card.add(Long.parseLong(st1.nextToken())); } for(int i=0; i<M;i++) { long first = card.poll(); long second = card.poll(); second+=first; card.add(second); card.add(second); } long sum =0; for(int i=0; i<N;i++) { sum+=card.poll(); } System.out.println(sum); } }
예제에 나온대로
3 1
3 2 6
을 우선순위 큐에 입력하면,
카드에 적힌 값인 3 2 6 이
2 3 6 으로 정렬되어 저장된다.
(기본적으로 정수형에 대해서 오름차순 정렬)
카드에 적힌 값들을 long가 아닌 int로 받으면 틀린다.
주의하기
우선순위 큐를 잘 몰라서 참고 했다.
참고 자료 :
[백준 15903] 카드 합체 놀이
우선순위 큐를 사용하여 문제를 풀었습니다. 우선순위큐만 이야기하면 따로 설명은 없어도 될거같습니다. 반복횟수만큼 큐에서 두개를 빼고 더한값을 큐에 두번 넣어주면 되니깐용 아 그리고 i
skwzz.tistory.com
'백준 > 우선순위 큐' 카테고리의 다른 글
14235 크리스마스 선물 (자바) (0) 2022.02.03 12018 Yonsei TOTO (0) 2021.10.21