

일단 Arrays.sort()를 이용하여 문제를 해결할 수 있긴 하다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main{
public static void main(String[] args)throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(br.readLine());
int[] list = new int[N];
for(int i=0; i<N; i++){
list[i] = Integer.parseInt(br.readLine());
}
Arrays.sort(list);
for(int i: list){
sb.append(i).append("\n");
}
System.out.println(sb);
br.close();
}
}
문제 힌트에 카운팅 정렬이 언급되기 때문에 카운팅 정렬에 대해 찾아보았다.
https://st-lab.tistory.com/104
자바 [JAVA] - 카운팅 정렬 (Counting Sort / 계수 정렬)
[정렬 알고리즘 모음] 더보기 1. 계수 정렬 (Counting Sort) - [현재 페이지] 2. 선택 정렬 (Selection Sort) 3. 삽입 정렬 (Insertion Sort) 4. 거품 정렬 (Bubble Sort) 5. 셸 정렬 (Shell Sort) 6. 힙 정렬 (Heap Sort) 7. 합병(
st-lab.tistory.com
이 분의 글을 참고하였다.
참고하면서 공부한 것까지는 좋았는데, 실제로 문제에 대입하는 과정에서 누적합을 사용하니까 10000까지 출력되는 문제가 발생했다... 코드를 이것저것 고쳐보았지만 결국 해결하지 못해서, 코드를 참고하였다...
https://st-lab.tistory.com/107
[백준] 10989번 : 수 정렬하기 3 - JAVA [자바]
www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmic
st-lab.tistory.com
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main{
public static void main(String[] args)throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(br.readLine());
//수의 범위가 1~10000
int[] range = new int[10001];
//해당 값을 인덱스로 하는 배열 값 증가
for(int i=0; i<N; i++){
range[Integer.parseInt(br.readLine())]++;
}
for(int i = 1; i < 10001; i++){
while(range[i] > 0){
sb.append(i).append('\n');
range[i]--;
}
}
System.out.println(sb);
br.close();
}
}
코드를 보니 누적합 부분은 제외하시고, 숫자가 1부터 10000까지 들어가는 것을 고려하여 10001까지 for문을 돌리고 while문을 사용하여 range[i]이 0보다 클 경우 데이터를 추가해나가는 것을 알 수 있었다.
'알고리즘 > 백준' 카테고리의 다른 글
| [백준] 11650 - 좌표 정렬하기 (JAVA/ 자바) (0) | 2024.06.09 |
|---|---|
| [백준] 1427 - 소트인사이드 (JAVA/ 자바) (0) | 2024.06.07 |
| [백준] 2751 - 수 정렬하기 2 (JAVA/ 자바) (0) | 2024.06.01 |
| [백준] 25305 - 커트라인 (JAVA/ 자바) (0) | 2024.05.31 |
| [백준] 2587 - 대표값2 (JAVA/ 자바) (0) | 2024.05.30 |