반응형

1. Sort로 풀면 안될것 (개수가 10000000개 이기 때문에 시간초과)

 -> 배열을 이용한다. (예를 들어 3번이 4번 나왔다면 arr[3]++ 를 사용하여 개수를 늘려준다.)


2. Scanner 사용을 하면 안됨 (★★★★★★★★★★★★★★★★)

-> BufferedReader ,BufferedWriter 를 사용한다.

 + bufferedwriter의 flush() 함수를 사용해도 시간 초과가 뜬다.

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
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
 
public class Main {
 
    public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
 
        int N = Integer.parseInt(br.readLine());
        int[] arr = new int[10001];
        // 10000000 개이기 때문에 sort를 사용하면 안된다.
        for (int i = 0; i < N; i++) {
            arr[Integer.parseInt(br.readLine())] ++;
        }
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
 
        for (int i = 1; i < 10000; i++) {
            if (arr[i] > 0) { //arr[i]가 0보다 작거나 같으면 사용된 횟수가 없기 때문에 패스
                for (int j = 0; j < arr[i]; j++) {
                    //저장된 갯수만큼 출력해줘야 하기 때문에
                    bw.write(Integer.toString(i) + "\n");
                    //bw.flush(); 가끔 사용안하면 이클립스 Console에 출력이 안됨
                }
            }
        }
        br.close();
        bw.close();
    }
 
}
 
 
 
cs


반응형

+ Recent posts