본문 바로가기
자바 알고리즘

빠른 입출력 실험하기(버퍼리더 + 스트링빌더)

by hoshi03 2024. 12. 17.

오름차순 정렬 후 하나씩 뱉는 문제를 풀다가 뭐가 젤 나은지 궁금해져서 해봤다

 

일단 버퍼리더랑 스트링빌더 조합이 가장 빨랐다

 

1. 스캐너 + stringbuilder

결과가 확실히 차이난다

진짜 정말 느리다..

import java.util.*;
import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException{
        Scanner in = new Scanner(System.in);
        StringBuilder sb = new StringBuilder();
        int n = in.nextInt();
        int[] arr= new int[n];
        for (int i  =0; i < n; i++){
            arr[i] = in.nextInt();
        }
        Arrays.sort(arr);
        for (int x : arr) {
            sb.append(x).append('\n');
        }

        System.out.println(sb);
    }
}

 

2. 버퍼드리더/라이터

아까보단 낫지만 여전히 좀 느리다

import java.util.*;
import java.io.*;

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));
        StringBuilder sb = new StringBuilder();
        int n =Integer.parseInt(br.readLine());
        int[] arr= new int[n];
        for (int i  =0; i < n; i++){
            arr[i] = Integer.parseInt(br.readLine());
        }
        Arrays.sort(arr);
        for (int x : arr) {
            bw.write(String.valueOf(x)+'\n');
        }

        bw.flush();
    }
}

 

3. 버퍼드리더/스트링빌더

 

빠름

import java.util.*;
import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        int n =Integer.parseInt(br.readLine());
        int[] arr= new int[n];
        for (int i  =0; i < n; i++){
            arr[i] = Integer.parseInt(br.readLine());
        }
        Arrays.sort(arr);
        for (int x : arr) {
            sb.append(x).append('\n');
        }
        System.out.println(sb);
    }
}

'자바 알고리즘' 카테고리의 다른 글

백준 3273 : 두 수의 합  (1) 2024.12.01
백준 10431 : 줄세우기  (0) 2024.12.01
백준 2644 : 촌수계산  (0) 2024.04.10
그래프 문제일때 생각해볼 것  (0) 2024.04.07
등수구하기  (0) 2024.01.13