1. 25305번 커트라인
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()); // 상을 받는 학생 수
st = new StringTokenizer(br.readLine());
Integer[] scores = new Integer[N];
for (int i = 0; i < N; i++) {
scores[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(scores, Collections.reverseOrder()); // 내림차순 정렬
System.out.println(scores[K - 1]); // K번째 학생 점수 출력 (커트라인)
}
}
2. 2751번 수 정렬하기2
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));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
Set<Integer> set = new TreeSet<>(); // 자동 정렬 + 중복 제거
for (int i = 0; i < N; i++) {
set.add(Integer.parseInt(br.readLine())); // 중복이 자동 제거됨
}
for (int num : set) {
bw.write(num + "\n");
}
br.close();
bw.flush();
bw.close();
}
}
- TreeSet을 이용해 중복된 수를 제거한다.
3. 10989번 수 정렬하기3
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
int[] count = new int[10001]; // 숫자 범위: 1 ~ 10,000
// 입력된 숫자 카운트 증가
for (int i = 0; i < N; i++) {
count[Integer.parseInt(br.readLine())]++;
}
// 카운트 배열을 순회하면서 숫자 출력
for (int i = 1; i <= 10000; i++) {
while (count[i] > 0) { // 해당 숫자가 존재하면 출력
bw.write(i + "\n");
count[i]--; // 한 번 출력할 때마다 감소
}
}
br.close();
bw.flush();
bw.close();
}
}
- 메모리가 8MB라는 점을 주의해야 한다. 일반적인 정렬 방식(퀵 정렬, 머지 정렬, Collections.sort 등)을 사용하면 메모리 초과가 발생할 가능성이 높다.
- 해당 숫자의 인덱스의 카운트 숫자를 늘리면서 해당 숫자가 몇 번 나왔는지를 체크할 수 있다.
'알고리즘 공부 > 백준' 카테고리의 다른 글
[JAVA 34일차 / 하루 3문제] 1181번, 10814번, 18870번 (0) | 2025.03.13 |
---|---|
[JAVA 33일차 / 하루 3문제] 1427번, 11650번, 11651번 (0) | 2025.03.12 |
[JAVA 31일차 / 하루 3문제] 2839번, 2750번, 2587번 (0) | 2025.03.10 |
[JAVA 30일차 / 하루 3문제] 19532번, 1018번 (1) | 2025.03.09 |
[JAVA 29일차 / 하루 3문제] 24266번, 24267번, 24313번 (0) | 2025.03.05 |