JAVA

[JAVA] Scanner 대신 BufferedReader 사용하기

Alex Han 2025. 3. 24. 04:25
반응형

1. BufferedReader란?

BufferedReaderJava에서 입력을 빠르게 처리할 수 있도록 도와주는 클래스다.

특히 Scanner보다 속도가 빠르기 때문에 알고리즘 문제 풀 때 자주 사용한다.

 

 

 


2. 왜 빠를까?

버퍼(buffer)라는 공간을 이용해서 입력을 한 줄씩 읽어오고, 그걸 메모리 상에서 처리하기 때문.

Scanner는 입력받을 때마다 처리하지만,

BufferedReader는 미리 버퍼에 저장하고 한 번에 처리해서 더 빠름.

 

 

 


3. 사용법

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class Example {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        // 한 줄 입력 받기
        String input = br.readLine();
        System.out.println("입력한 값: " + input);
    }
}

 

 

 


4. 주의사항

 

1. readLine()은 무조건 문자열(String)로 입력을 받음

숫자를 받으려면 형변환 필수!

int num = Integer.parseInt(br.readLine());

 

2. IOException 처리 필요

throws IOException 꼭 붙여줘야 함.

 

3. 한 줄 전체 입력 받기 → 공백 포함 가능

Scanner.nextLine()과 비슷

 

 

 


5. BufferedReader vs Scanner

특징 BufferedReader Scanner
속도 빠름 상대적으로 느림
입력 방식 한 줄씩(String) 다양한 타입 지원 (nextInt, next, nextLine 등)
버퍼 사용 O X
예외 처리 IOException 필요 필요 없음
사용 용도 대량 입력, 속도 중요 시 간단 입력 처리

 

 

 


6. 예시 - 여러 줄 입력 받기

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

int n = Integer.parseInt(br.readLine());

for (int i = 0; i < n; i++) {
    String line = br.readLine();
    System.out.println("입력받은 줄: " + line);
}

 

 

 


7. 문자열 공백 분리하기

String line = br.readLine();
String[] tokens = line.split(" "); // 공백 기준으로 나눔

for (String token : tokens) {
    System.out.println(token);
}

 

 

 


8. 정리

장점 설명
빠르다 Scanner보다 속도 훨씬 좋음
한 줄 입력에 강하다 대량 데이터 처리에 효율적
버퍼 사용 메모리 활용 효율적

 

알고리즘 문제에서 “입력이 많다”, “시간 제한 빡세다” → 무조건 BufferedReader 사용

반응형