ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 14235 크리스마스 선물 (자바)
    백준/우선순위 큐 2022. 2. 3. 14:42
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.Collections;
    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));
    	
    	// 아이들과 거점지를 방문한 횟수	
    	int N = Integer.parseInt(br.readLine());
    	
    	PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder());
    	
    	
    	for(int i=0; i<N; i++) {
    		StringTokenizer st = new StringTokenizer(br.readLine(), " ");	
    		int input = Integer.parseInt(st.nextToken());
    	
    		// 1) input 값이 0일때, 즉 아이들을 만났을 때
    		if(input ==0 ) {
    			
    			// 1-1 ) 나눠줄 선물이 없음
    			if(pq.size() ==0) {
    				
    				System.out.println("-1");
    				continue;
    				
    			//1-2) 나눠줄 선물이 있음
    			}else {
    			
    			int output = pq.poll();
    			System.out.println(output);
    			continue;
    			}
    			
    		// 2) input 값이 0이 아님. 즉, 거점지에 와서 선물 충전
    		}else {
    			
    			for(int j=0; j<input; j++) {
    				
    				int gift = Integer.parseInt(st.nextToken());
    				pq.add(gift);
    			}	
    		  }
    		}
    	}	
    }

    우선순위 큐를 사용해서 완성했다.

     

    PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder());

    이렇게 코드를 사용함으로써, 우선순위 큐에 데이터가 내림차순으로 저장되게 해서, 아이들에게 선물을 나눠줄 때 가치가 가장 큰 선물부터 나눠줄 수 있도록 했다.

     

    '백준 > 우선순위 큐' 카테고리의 다른 글

    12018 Yonsei TOTO  (0) 2021.10.21
    15903 카드 합체 놀이  (0) 2021.10.20

    댓글

Designed by Tistory.