백준 10989 수 정렬하기 3 (java)

2017. 1. 2. 17:34Algorithm Solution

일단 문제는 아래 그림과 같다. 



와 드디어 풀었다...이거 계속 시관 초과 나가지고 진짜 힘들었는데..ㅠㅠㅠ 

시간제한이 5초라서 정말 힘들었다.  Counting Sort 써서 푸는 건데 자바는 Scanner로 입출력을 받으면 아예 시간단축하기가 힘들다. (카운팅 소트 참고자료 : http://nhs0912.tistory.com/57 )

그래서 사용한 것이 BufferdReader 와  BufferedWriter 이다. 여기서 중요한 것은 BufferedWriter 는 꼭 close()을 해야 출력이 된다. 아마 close() 전까지 계속 대기하는것 같다. 

아래는 소스이다. 카운팅 소트에서 누적하진 않고 그냥 바로 출력하였다. 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package Study;
 
/**
 * Created by heeseoknoh on 01/01/2017.
 */
 
import java.io.*;
import java.util.Scanner;
import java.util.StringTokenizer;
 
public class Main {
    int[] numbers; //입력된 숫자
    int[] countArr;//숫자 세기
  
    int max = 0;
    int index = 0;
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
    void inputNumbers() throws IOException {//숫자 입력하기
        //Scanner sc = new Scanner(System.in);
        //int size = sc.nextInt();
 
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int size=Integer.parseInt(br.readLine().trim());
        numbers = new int[size];
        for (int i = 0; i < numbers.length; i++) {
            int num = Integer.parseInt(br.readLine().trim());
            numbers[i] = num;
            if (max < num) {
                max = num;
            }
        }
    }
 
    void sort() throws IOException {
        inputNumbers();
        int maxNumber = max;
        countArr = new int[maxNumber + 1]; //0-maxNumber+1만큼 생성
   
 
        for (int i = 0; i < numbers.length; i++) {
            //해당하는 숫자 카운터
            countArr[numbers[i]]++;
        }
        for (int i = 0; i < countArr.length; i++) {
            for (int j = 0; j < countArr[i]; j++) {
                bw.write(i+"\n");
            }
        }
        bw.close();      
    }
 
    public static void main(String[] args) throws IOException {
        new Main().sort();
 
 
    }
}
cs


'Algorithm Solution' 카테고리의 다른 글

백준 9095번 1,2,3 더하기  (0) 2017.02.27
백준 1991번 트리순회  (0) 2017.01.25
백준 1193 분수찾기  (0) 2016.12.16
숫자 팰린드롬(palindrome)  (0) 2016.12.12
백준 2577번 숫자의 갯수  (0) 2016.12.07