백준 1715 카드 정렬하기

노문택·2022년 5월 29일
0
post-custom-banner

https://www.acmicpc.net/problem/1715

간단한문제

정렬후에 앞에서부ㅌ ㅓ합치고 넣어주면 끝

그리고 정렬을 다시해줘야되는데 그냥 최대힙을 이용하면된다..

그,리고 주의할점

덱이 1개인경우 (N=1)에는 비교할필요가없으므로 0으로해주기

오히려 겁먹고 어렵게생각하면 안풀리는 문제이다..


필자의 경우

이전카드 // 그리고 여태까지합친값 // 그리고 앞으로의 합칠값

이렇게 비교하고 더하고 어렵게짯엇는데.. 생각을 달리하니 금방풀리는문제..


아무튼 아이디어를 바탕으로 구현한 코드는 다음과 같다.

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

public class 카드정렬하기 {

	public static void main(String[] args) throws Exception{
		// TODO Auto-generated method stub
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		PriorityQueue<Integer> pq = new PriorityQueue<>();
		int tc = Integer.parseInt(br.readLine());
		int k[] = new int[tc];
		for(int i=0;i<tc;i++) {
			pq.add(Integer.parseInt(br.readLine()));
		}
		

	
		
		int firstnum = pq.poll();
		if(pq.isEmpty()) {
			System.out.println(firstnum);
		}
		else {
			int sum = firstnum;
		while(!pq.isEmpty()) {

			int cur = pq.poll(); // 현재카드값
			sum += cur;
			if(firstnum==0) {
				firstnum = cur;
				continue;
			}
			
			if(pq.isEmpty()) {
				break;
			}
			pq.add(cur+firstnum);
			firstnum=0;
		}

		System.out.println(sum);
		}
		
	}

}

얼른 다음으로 ㄱㄱ

profile
노력하는 뚠뚠이
post-custom-banner

0개의 댓글