https://www.acmicpc.net/problem/10989
1. 아이디어
일반적인 sort 정렬로는 수의 개수가 많아서 메모리 초과가 발생할 수 있다.
수의 범위가 주어졌고, 범위가 넓지 않다는 점에서 카운팅 정렬을 활용해서 해결했다.
2. 문제풀이
카운팅 정렬로 등장한 수에 해당하는 인덱스를 갱신하며 수를 센 후에 배열을 순회하며 등장 횟수만큼 출력하면 간단하게 해결할 수 있다.
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));
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(br.readLine());
final int MAX = 10_000;
int[] cntArr = new int[1 + MAX];
for (int i = 0; i < N; i++) {
cntArr[Integer.parseInt(br.readLine())]++;
}
for (int i = 0; i < cntArr.length; i++) {
for (int j = 0; j < cntArr[i]; j++) {
sb.append(i).append("\n");
}
}
bw.write(sb.toString());
bw.flush();
}
}
4. 후기
'코딩테스트 준비 > 백준' 카테고리의 다른 글
[백준] 15688번 - 수 정렬하기 5 [Java] (0) | 2024.12.06 |
---|---|
[백준] 11931번 - 수 정렬하기 4 [Java] (0) | 2024.12.06 |
[백준] 2751번 - 수 정렬하기 2 [Java] (0) | 2024.12.06 |
[백준] 2750번 - 수 정렬하기 [Java] (0) | 2024.12.06 |
[백준] 10158번 - 개미 [Java] (0) | 2024.12.06 |