반응형
코딩테스트를 java로 하다 생긴 의문점
Scanner말고 BufferedReader를 사용하는 이유가 뭘까?
단순하게 속도가 빠르다는 것말고 차이점이 무엇인지 알아보기 위해서 찾아봄
1. BufferedReader를 사용하는 이유
단순하게. BufferedReader가 Scanner보다 훨씬 빠름
- BufferedReader가 내부적으로 버퍼를 사용해서 한 번에 많은 양의 데이터를 읽기 때문
- 추가적으로 StringTokenizer를 통해 공백 기준으로 나눠줘야 함
- Scanner는 내부적으로 정규식을 사용하여 파싱하기에 상대적으로 느림
- 입력이 많을수록 Scanner와 BufferedReader 간의 성능 차이 커짐
2. Scanner vs BufferedReader
항목ScannerBufferedReader + StringTokenizer

3. 간단한 입력에서는 뭐가 더 나을까?
Scanner와 BufferedReader 모두 적합함!
- Scanner의 경우 사용이 간편하고 직관적임, 작은 양의 데이터를 다룰 때 편리
- 하지만, 대규모 데이터가 입력이 된다면 시간초과를 방지하기 위해 BufferedReader 사용 추천
4. Scanner와 BufferedReader의 간단 예시
- Scanner
import java.util.Scanner;
public class ScannerExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter your name: ");
String name = scanner.nextLine();
System.out.print("Enter your age: ");
int age = scanner.nextInt();
System.out.println("Hello, " + name + "! You are " + age + " years old.");
scanner.close();
}
}
- BufferedReader
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class BufferedReaderExample {
public static void main(String[] args) {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
try {
System.out.print("Enter your name: ");
String name = reader.readLine();
System.out.print("Enter your age: ");
int age = Integer.parseInt(reader.readLine());
System.out.println("Hello, " + name + "! You are " + age + " years old.");
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}반응형
'TIL' 카테고리의 다른 글
| Redis가 싱글 스레드로 만들어진 이유 (0) | 2026.02.12 |
|---|---|
| 데이터베이스 인덱스 (0) | 2025.11.10 |
| Entity Manager 엔티티 매니저 (0) | 2025.11.04 |
| 분산 트랜잭션에서 일관성을 보장하는 방법 (0) | 2025.09.29 |
| 최종적 일관성 (0) | 2025.09.26 |