일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- codesandbox
- vanillaJS
- Java
- react
- 코딩테스트 고득점 Kit
- 프로그래머스 자바
- 코틀린
- useEffect
- 코딩테스트 고득점 Kit 완전탐색
- websocket
- 데이터모델링과마이닝
- 디자인 패턴
- 프로그래밍 언어론
- NextJS
- JavaScript
- react hook
- React JS
- 리액트 훅
- 백준
- 프로그래머스
- 컴퓨터 네트워크
- 자바 공부
- 프로그래머스 완전탐색
- 자바
- design pattern
- 자바스크립트
- 장고
- useState
- react firebase
- 리액트
Archives
- Today
- Total
기록하는 개발자
[백준][JAVA] 1874 : 최소 힙 본문
728x90
https://www.acmicpc.net/problem/1927
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;
public class Main {
public static class minHeap{
private ArrayList<Integer> heap;
public minHeap(){
heap=new ArrayList<>();
heap.add(0);
}
public void insert(int val){
heap.add(val);
int p=heap.size()-1;
while(p>1 && heap.get(p/2)>heap.get(p)) {
int temp = heap.get(p / 2);
heap.set(p / 2, heap.get(p));
heap.set(p, temp);
p /= 2;
}
}
public int delete(){
if(heap.size()-1<1) return 0;
int deleteItem = heap.get(1);
heap.set(1, heap.get(heap.size()-1));
heap.remove(heap.size()-1);
int p=1;
while((pos*2)<heap.size()){
int min=heap.get(p*2);
int minP=p*2;
if(((p*2+1)<heap.size())&& min>heap.get(p*2+1)){
min = heap.get(p*2+1);
minP=p*2+1;
}
if(heap.get(p)<min) break;
int tmp=heap.get(p);
heap.set(p, heap.get(minP));
heap.set(minP, tmp);
pos=minP;
}
return deleteItem;
}
}
public static void main(String[] args)throws Exception{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int N=Integer.parseInt(br.readLine());
minHeap mh=new minHeap();
for(int i=0; i<N; i++){
int val=Integer.parseInt(br.readLine());
if(val==0) System.out.println(mh.delete());
else mh.insert(val);
}
}
}
728x90
'Algorithm' 카테고리의 다른 글
[백준][JAVA] 1991 : 트리 순회 (0) | 2021.07.21 |
---|---|
[백준][JAVA] 11279 : 최대 힙 (0) | 2021.07.21 |
[백준][JAVA] 1874 : 스택 수열 (0) | 2021.07.11 |
[백준][JAVA] 10828 : 스택 (0) | 2021.07.11 |
[백준][JAVA] 1620 : 나는야 포켓몬 마스터 이다솜 (0) | 2021.07.11 |