JAVA
[JAVA] Scanner 대신 BufferedReader 사용하기
Alex Han
2025. 3. 24. 04:25
반응형
1. BufferedReader란?
BufferedReader는 Java에서 입력을 빠르게 처리할 수 있도록 도와주는 클래스다.
특히 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 사용
반응형