문제
https://www.acmicpc.net/problem/1927
문제 설명
문제 풀이
처음에 패기있게 바이너리 트리를 직접 구현했으나 시간초과가 나왔다. 그래서 어쩔수 없이 우선순위 큐를 사용해서 구현했다.
근데 같은 로직을 switch문으로 구현하면 시간 초과가 나고 if문으로 해결해야 성공이 됐다. switch가 if에 비해 실행시간이 빠른 걸로 알고 있는데 의외였다. 아마 else랑 default의 속도 차이가 있지 않을까 추측해본다.
코드
import java.util.*;
class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Queue<Integer> pq = new PriorityQueue<>();
int N = sc.nextInt();
while(N-- > 0) {
int x = sc.nextInt();
if(x == 0) {
if (pq.isEmpty()) {
System.out.println(0);
} else {
System.out.println(pq.poll());
}
}
else
pq.offer(x);
}
}
}
'🧑💻코딩 테스트 > 백준 (BOJ)' 카테고리의 다른 글
[코딩 테스트/백준 알고리즘] 5430번 - AC (Java, 자바 풀이) (0) | 2022.12.16 |
---|---|
[코딩테스트/백준 알고리즘] 2606번 - 바이러스 (Java, 자바 풀이) (0) | 2022.12.15 |
[코딩 테스트/ 백준 알고리즘] 17219번 - 비밀번호 찾기 (Java, 자바 풀이) (0) | 2022.12.13 |
[코딩 테스트/ 백준 알고리즘] 11399번 - ATM (Java, 자바 풀이) (0) | 2022.12.12 |
[코딩 테스트/백준 알고리즘] 11047번 - 동전 0 (Java, 자바 풀이) (0) | 2022.12.11 |
댓글