https://www.acmicpc.net/problem/11004
1. 아이디어
N의 크기가 최대 500만으로 제법 커서 우선순위 큐를 활용해서 시간을 단축해보려했다.
2. 문제풀이
최대힙으로 우선순위 큐를 만들어서 K개의 수는 그냥 넣고 나머지 수는 하나 넣고 우선순위 큐에서 하나 빼는 방식으로 구현했다. 그러면 우선순위 큐에서 원소를 하나 뺐을 때 해당 원소가 K번째로 큰 수가 된다.
3. 코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int K = Integer.parseInt(st.nextToken());
PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder());
st = new StringTokenizer(br.readLine());
for (int i = 0; i < K; i++) {
pq.add(Integer.parseInt(st.nextToken()));
}
while (st.hasMoreTokens()) {
pq.add(Integer.parseInt(st.nextToken()));
pq.poll();
}
System.out.println(pq.poll());
}
}
4. 후기
'코딩테스트 준비 > 백준' 카테고리의 다른 글
[백준] 1707번 - 이분 그래프 [Java] (0) | 2025.01.06 |
---|---|
[백준] 1764번 - 듣보잡 [Java] (0) | 2025.01.06 |
[백준] 2920번 - 음계 [Java] (1) | 2025.01.06 |
[백준] 14910번 - 오르막 [Java] (0) | 2025.01.06 |
[백준] 3003번 - 킹, 퀸, 룩, 비숍, 나이트, 폰 [Java] (0) | 2025.01.06 |