본문 바로가기
짱구 굴리기 (Q) -

[백준 15903] 카드 합체 놀이

by skwzz 2019. 4. 7.

출처 : https://www.acmicpc.net/problem/15903

 

우선순위 큐를 사용하여 문제를 풀었습니다. 

우선순위큐만 이야기하면 따로 설명은 없어도 될거같습니다.

반복횟수만큼 큐에서 두개를 빼고 더한값을 큐에 두번 넣어주면 되니깐용

아 그리고 int를 하면 범위가 넘어갈거같아 long으로 했습니다

 

public class Q15903{
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		
		int cardCnt = Integer.parseInt(st.nextToken());
		int loopCnt = Integer.parseInt(st.nextToken());
		
		PriorityQueue<Long> pq = new PriorityQueue<Long>();
		st = new StringTokenizer(br.readLine());
		
		for(int i=0; i<cardCnt; i++) {
			pq.add(Long.parseLong(st.nextToken()));
		}
		
		while(loopCnt > 0) {
			long temp = pq.poll();
			temp += pq.poll();
			
			pq.add(temp);
			pq.add(temp);
			loopCnt--;
		}
		long sum = 0;
		while(!pq.isEmpty()) {
			sum += pq.poll();
		}
		System.out.print(sum);
		
	}
}

'짱구 굴리기 (Q) - ' 카테고리의 다른 글

[백준 7576] 토마토  (0) 2019.04.09
[백준 2178] 미로탐색  (0) 2019.04.08
[백준 1924] 2007년  (0) 2019.04.07
[백준 2839] 설탕 배달  (0) 2019.04.07
[백준 2193] 이친수  (0) 2019.04.05