Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- BOJ
- Codeup
- 단계별로 풀어보기
- JAVA 11
- 이론
- HAVING 절
- 기초100제
- 백준
- SQLD / SQLP
- baekjoon
- 파이썬
- pypy3
- 응용
- SELECT 절
- Codeforces Round #802 (Div. 2)
- Java11
- Python
- 공공데이터
- 명품 자바 프로그래밍
- 개념
- level1
- 코딩테스트
- 기본
- java
- 기초
- GROUP BY 절
- Python 3
- programmers
- 자바
- 헤드퍼스트 디자인패턴
Archives
- Today
- Total
Development Project
[ Baekjoon - 10/21 ] - 1927번: 최소 힙 본문
소요시간 : 자바 파이썬 둘다 코딩하는 시간 포함 15분정도. 행복한 문제~
이번 문제는 솔브닥 클래스를 올리고싶어서 풀게된 문제로, 최소힙을 구현할 수 있는지에 관한 문제이다!
우선 힙을 어떻게 구현해야하는지 살펴보자!
- 자바의 경우
- PriorityQueue를 이용해 최소힙과 최대힙 둘다 구현 가능하다
만약 사용자 정의 Class를 큐로 쓰고싶다면, Comparable이나 Comparator를 이용해 우선순위를 설정해야한다. -
import java.util.*; // 최소힙 PriorityQueue<Integer> minHeap = new PriorityQueue<>(); // 최대힙 PriorityQueue<Integer> maxHeap = new PriorityQueue<>(Collections.reverseOrder());
- PriorityQueue를 이용해 최소힙과 최대힙 둘다 구현 가능하다
- 파이썬의 경우
- 최소힙, 최대힙 둘다 heapq 라이브러리를 이용해 구현하되, 최소힙이 default이므로 최대힙을 구현하기 위해서는 마이너스를 붙인다.
-
import heapq # 최소힙 minHeap = [] heapq.heappush(heap, n) # 최대힙 minHeap = [] heapq.heappush(heap, (-n, n))
이를 구현할 수 있으면 위 문제는 매우 간단하다.
- 풀이 코드
- Java 11
-
import java.util.*; import java.io.*; public class Main{ static int N,x; public static void main(String[] args) throws IOException { //System.setIn(new FileInputStream("src/input.txt")); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); N = Integer.parseInt(br.readLine()); PriorityQueue<Integer> pq = new PriorityQueue<>(); while(N-->0){ x = Integer.parseInt(br.readLine()); if(x==0){ if(pq.isEmpty()){ System.out.println(0); }else{ System.out.println(pq.remove()); } }else{ pq.add(x); } } } }
-
- Python 3
-
import sys import heapq input = sys.stdin.readline N = int(input()) pq = [] for _ in range(N): x = int(input()) if x==0: if len(pq)==0: print(0) else: print(heapq.heappop(pq)) else: heapq.heappush(pq, x)
-
- Java 11
- 결과
'CodingTest > Baekjoon' 카테고리의 다른 글
[ Baekjoon - 10/23 ] - 1103번: 게임 (0) | 2022.10.23 |
---|---|
[ Baekjoon - 10/22 ] - 6087번: 레이저 통신 (0) | 2022.10.22 |
[ Baekjoon - 10/20 ] - 1581번: 락스타 락동호 (0) | 2022.10.21 |
[ Baekjoon - 10/19 ] - 1644번: 소수의 연속합 (0) | 2022.10.20 |
[ Baekjoon - 10/18 ] - 19238번: 스타트 택시 (0) | 2022.10.20 |
Comments