728x90

<오늘의 학습 키워드>
- 우선순위큐
<오늘의 문제>
제목 : 백준 / 실버3 / 2075번 N번째 큰 수
https://www.acmicpc.net/problem/2075
<풀이>
정답은 더보기
더보기
package BOJ.자료구조.N번쨰큰수_2075.insub2004_241116;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Collections;
import java.util.PriorityQueue;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int num = Integer.parseInt(br.readLine());
PriorityQueue<Integer> queue = new PriorityQueue<>(Collections.reverseOrder());
for (int i = 0; i < num; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
while (st.hasMoreElements()) {
queue.add(Integer.parseInt(st.nextToken()));
}
}
int answer = 0;
while (num != 0) {
answer = queue.poll();
num--;
}
System.out.println(answer);
}
}
- 어제와 마찬가지로 우선순위큐를 사용했고 다른점은 우선순위큐의 생성자 파라미터로 정렬을 거꾸로 할 수 있는 Collections 객체를 넣어주었다.
- 입력을 받는 부분에서도 StringTokenizer를 사용하여 구분자를 기본 공백으로 해서 입력받았다.
- 마지막 N번째를 돌 때까지 큐에서 꺼내고 마지막 N번째 수를 출력했다.
<결론, 주의할점>
- 마지막에 큐에서 N번째까지 꺼내지 않는 방법이 있었다.
- 우선순위큐를 기본 생성자로 생성한다.
- 큐에 숫자를 넣는것과 동시에 큐의 사이즈가 N을 넘으면 하나를 뺀다.
- 그러면 제일 마지막에 큐의 가장 앞에는 N번째 숫자만 남아있다.
- ex) [ N, N + 1, N + 2 ... 제일 큰 수 ]
- 정답을 출력할 땐 poll 한 번만 해주면 된다.
반응형
'Study or Lecture > 항해 99클럽 코딩테스트 스터디' 카테고리의 다른 글
| 항해 99클럽 코딩테스트 스터디 22일차 TIL (자바 / 비기너) (0) | 2024.11.19 |
|---|---|
| 항해 99클럽 코딩테스트 스터디 21일차 TIL (자바 / 비기너) (0) | 2024.11.17 |
| 항해 99클럽 코딩테스트 스터디 19일차 TIL (자바 / 비기너) (0) | 2024.11.15 |
| 항해 99클럽 코딩테스트 스터디 18일차 TIL (자바 / 비기너) (1) | 2024.11.14 |
| 항해 99클럽 코딩테스트 스터디 17일차 TIL (자바 / 비기너) (9) | 2024.11.14 |
댓글