Park DJ
dj0998
Park DJ
전체 방문자
오늘
어제
  • 분류 전체보기 (363)
    • 백준 (363)

공지사항

인기 글

태그

  • 백준 16926
  • 백준 4659
  • 백준 10709
  • 백준 24039
  • 백준 7662
  • 백준 1914
  • 백준 12605
  • 백준 15312
  • 백준 1531
  • 백준 1064
  • 백준 1011
  • Java
  • 자바
  • 백준
  • 백준 2225
  • 백준 7567
  • 백준 15961
  • 백준 3049
  • 백준 6550
  • 백준 16194
  • 백준 3135
  • 백준 12871
  • 백준 2343
  • 백준 1747
  • 백준 15655
  • 백준 2591
  • 백준 8892
  • 백준 2467
  • 백준 1495
  • 백준 14582
hELLO · Designed By 정상우.
Park DJ

dj0998

백준 11279 최대 힙(Java)
백준

백준 11279 최대 힙(Java)

2023. 2. 7. 03:11

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

 

11279번: 최대 힙

첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0

www.acmicpc.net


 

해석 및 팁

 


 

이 문제는 우선순위 큐를 사용하는 문제입니다. 우선순위 큐는 기본적으로 최소힙의 형태이므로 Collecions.reverseOrder()을 사용하여 최대힙의 형태로 바꾸어주어야 합니다.

 


 

Java 코드

 


import java.util.Scanner;
import java.util.Collections;
import java.util.PriorityQueue;

public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    StringBuilder sb = new StringBuilder();
    PriorityQueue<Integer> q = new PriorityQueue<>(Collections.reverseOrder());
    int n = sc.nextInt();

    for(int i = 0; i < n; i++) {
      int num = sc.nextInt();
      if(num == 0) {
        if(q.isEmpty()) sb.append(0+"\n");
        else sb.append(q.poll()+"\n");
      }
      else q.add(num);
    }
    
    System.out.println(sb);
  }

}

'백준' 카테고리의 다른 글

백준 10799 쇠막대기(Java)  (0) 2023.02.07
백준 4963 섬의 개수(Java)  (0) 2023.02.07
백준 14889 스타트와 링크(Java)  (0) 2023.02.07
백준 1654 랜선 자르기(Java)  (0) 2023.02.06
백준 9020 골드바흐의 추측(Java)  (0) 2023.02.06
    '백준' 카테고리의 다른 글
    • 백준 10799 쇠막대기(Java)
    • 백준 4963 섬의 개수(Java)
    • 백준 14889 스타트와 링크(Java)
    • 백준 1654 랜선 자르기(Java)
    Park DJ
    Park DJ

    티스토리툴바