728x90
문제
https://www.acmicpc.net/problem/10989
풀이 코드
퀵정렬을 사용하는 Arrays.sort()와 System.out.println() 메서드를 사용해서 풀이하면 시간 초과로 통과할 수 없고, 카운팅 정렬 + StringBuilder() 조합으로 풀이해야 통과할 수 있다.
카운팅 정렬에 관한 내용은 아래의 글을 참고하였고, 이번 문제 풀이를 통해 카운팅 정렬을 접해볼 수 있었다.
https://st-lab.tistory.com/104
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));
int n = Integer.parseInt(br.readLine());
//배열의 인덱스는 숫자, 배열의 값은 해당 숫자의 빈도수
int[] count = new int[10001];
//카운팅 정렬
for (int i = 0; i < n; i++) {
count[Integer.parseInt(br.readLine())]++;
}
StringBuilder sb = new StringBuilder();
//오름차순으로 출력
for (int i = 1; i <= 10000; i++) {
for (int j = 0; j < count[i]; j++) {
sb.append(i).append("\n");
}
}
System.out.println(sb);
}
}
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
[알고리즘/백준] 10845 큐(자바, 링 버퍼) (0) | 2021.10.04 |
---|---|
[알고리즘/백준] 11650 좌표 정렬하기(자바) (0) | 2021.10.04 |
[알고리즘/백준] 10828 스택(자바) (0) | 2021.10.01 |
[알고리즘/백준] 10816 숫자 카드 2(자바, Map) (0) | 2021.09.30 |
[알고리즘/백준] 10814 나이순 정렬(자바) (0) | 2021.09.30 |
댓글