Problem Solving/구현

BOJ10989 수 정렬하기3

윤재에요 2024. 1. 29. 22:27

https://www.acmicpc.net/problem/10989

 

10989번: 수 정렬하기 3

첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다.

www.acmicpc.net

일반 입출력 Scanner, System.out.println을 쓰면 시간초과가 난다.

import java.io.*;
import java.util.*;
public class Main
{
	public static void main(String[] args) throws IOException{
	
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		int P = Integer.valueOf(br.readLine());
        int[] input = new int[P];
        
        for(int i=0; i<P; i++){
            input[i] = Integer.valueOf(br.readLine());
        }
        
        Arrays.sort(input);
        
        for(int i : input){
            bw.write(i+"\n");
        }
        
        bw.close();
	}
}

 

 

정렬이 아닌 카운트를 하는 방법

import java.io.*;

class Main
{
    public static void main (String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int N = Integer.parseInt(br.readLine());
        int[] cnt = new int[10001];
        for (int i = 0; i < N; i++) {
            int n = Integer.parseInt(br.readLine());
            cnt[n]++;
        }

        for (int i = 1; i <= 10000; i++)
            while(cnt[i]-- > 0) {
                bw.write(i + "\n");
            }
        bw.flush();
    }
}