반응형
1.
Arrays.sort 방법으로 풀기
2.
Arrays.sort 를 사용하지 않고 카운팅정렬을 사용하는 방법이다.
자세한 것은 코드를 보면서 이해하면 된다. 참고로 시간복잡도는 O(N + K) 이다. K는 자릿수를 의미하는데 입력데이터가 K 보다 훨 씬 큰경우. 즉 데이터가 많으면 많을 수록 O(N) 에 가깝기 때문에 이상적으로는 O(N) 이라고 보아도 무방하다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
// 수의 범위 (0 ~ 10000) 사실상 0은 제외
int[] cnt = new int[10001];
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
for (int i = 0; i < N; i++) {
// 해당 인덱스의 값을 1 증가
cnt[Integer.parseInt(br.readLine())] ++;
}
br.close();
StringBuilder sb = new StringBuilder();
// 0은 입력범위에서 없으므로 1부터 시작
for(int i = 1; i < 10001; i++){
// i 값이 개수가 0 이 될 때 까지 출력 (빈도수를 의미)
while(cnt[i] > 0){
sb.append(i).append('\n');
cnt[i]--;
}
}
System.out.println(sb);
}
}
'코딩 > BAEKJOON' 카테고리의 다른 글
[백준/BAEKJOON] 2741번 N 찍기 JAVA (0) | 2021.08.18 |
---|---|
[백준/BAEKJOON] 10950번 A + B - 3 JAVA (0) | 2021.08.17 |
[백준/BAEKJOON] 2751번 수 정렬하기2 JAVA (0) | 2021.08.14 |
[백준/BAEKJOON] 2750번 수 정렬하기 JAVA (0) | 2021.08.14 |
[백준/BAEKJOON] 2577번 숫자의 개수 JAVA (0) | 2021.08.14 |