늘 겸손하게

백준 BufferedReader, BufferedWriter로 입출력 본문

Programming/Java

백준 BufferedReader, BufferedWriter로 입출력

besforyou999 2022. 2. 9. 17:15

 

안녕하세요 besforyou 입니다

 

프로그램 수행 속도가 중요한 백준 문제를 풀때 

 

Scanner를 이용하는것보다 더 빠르게 입출력을 수행할 수 있는 

 

BufferedReader, BufferedWriter에 대해 설명하겠습니다.

 


1. BufferedReader로 입력받기

 

 

Scanner를 import하여 입력받는 방법도 있지만 BufferedReader로 입출력을 수행하는것이 더 빠릅니다.

 

 

 

BufferedReader 객체 생성 

 

1
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
cs

 

 

입력은 readLine() 메소드로 개행 문자 \n 를 만날때까지 입력을 받아옵니다.

 

1
int N = Integer.parseInt(br.readLine());
cs

 

입력 예시

 

입력 :

5

6

9

10

 

 

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
public class Main {
    public static void main(String args[]) throws IOException {
        
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        for (int i = 0 ; i < 4 ; i++) {
            int n = Integer.parseInt(br.readLine());
            System.out.println(n);
        }
 
    }   
}   
 
cs

 

 

출력

 

5

6

9

10

 

 

주의점

 

main 메소드 매개변수 오른편에 throws IOException을 추가하지 않고 사용하면 매번 readline() 메소드를 호출할때마다 try catch 문을 써야하기 때문에 매우 불편하므로 throws IOException을 메인 메소드 옆에 추가해줍니다.

 

 

1
2
public class Main {
    public static void main(String []args) throws IOException {
cs

 


2. BufferedWriter로 출력하기

 

마찬가지로 System.out.print 으로 그냥 출력하는것보다 훨씬 빠르게 출력할 수 있습니다.

 

Bufferedwriter 객체 생성

 

1
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
cs

 

사용법

 

1. write() 

 

버퍼가 꽉 차거나 개행문자를 만나면 화면으로 출력해주는 메소드입니다.

 

write() 메소드 안에 출력하고자 할 데이터를 인자로 줍니다.

단, 개행 문자를 직접 넣어주어야합니다. ( 자동으로 안 붙여줍니다 )

 

2. flush()

 

flush() 메소드롤 통해 버퍼 안에 저장된 데이터를 모두 화면으로 출력하여 버퍼를 비울 수 있습니다.

 

 

3. close()

 

BufferedWriter를 모두 사용했다면 close() 메소드로 출력 스트림을 종료 시킬 수 있습니다.

 


입력 예시

 

입력 :

5

6

9

10

 

 

코드

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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));
        
        for (int i = 0 ; i < 4 ; i++) {
            int n = Integer.parseInt(br.readLine());
            bw.write(n + "\n");
        }
        bw.flush();
        bw.close();
    }   
}   
 
cs

 

 

출력

 

5

6

9

10

'Programming > Java' 카테고리의 다른 글

자바 기본 타입 배열 정렬  (0) 2022.02.15
Java ArrayList 정렬 with Collections  (0) 2022.02.13
Java Thread 기초 이론  (0) 2022.02.08
Java 객체 인자로 전달, 레퍼런스  (0) 2022.02.08
Java 특징 정리  (0) 2022.02.07