BufferedReader
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();
특징
- 입력 속도가 빠름 (버퍼를 사용하니까)
- 항상 **문자열(String)**로 입력을 받음 (readLine()은 줄 단위 입력)
- 형 변환은 직접 해야 함
int num = Integer.parseInt(br.readLine());
- Java 1.1부터 지원 (좀 더 전통적인 방식)
장점
- 속도가 빠르고 대용량 입력 처리에 유리함
→ 알고리즘 문제 풀이할 때 자주 사용됨
단점
- 입력값을 직접 파싱해야함
Scanner
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
String str = sc.nextLine(); // or sc.next()
특징
- 입력 타입별로 메서드가 다양함 (nextInt(), nextDouble(), nextLine() 등)
- 입력 속도가 느림 (버퍼 사용 안 함 or 적게 사용함)
- Java 5부터 도입된 편리한 입력 클래스
장점
- 간편하고 가독성 좋음
- 형 변환 필요 없이 입력 타입대로 받을 수 있음
단점
- 속도가 느려서 입력이 많은 경우엔 비효율적
- next() vs nextLine() 혼동해서 실수하는 경우 많음
비교 요약
BufferedReader | Scanner | |
속도 | 빠름 | 느림 |
입력 방식 | 문자열 줄 단위 (readLine()) | 다양한 타입별 메서드 (nextInt(), nextLine()) |
형변환 | 수동 | 자동 |
사용 용도 | 대용량 입력, 알고리즘 | 간단한 입력, 교육용 |
에러 처리 | 예외 처리 필요 (IOException) | 예외 처리 덜 필요 |
'코딩테스트' 카테고리의 다른 글
백준 1000번 A+B (0) | 2025.04.07 |
---|---|
StringBuilderStringTokenizer (0) | 2025.04.07 |
StringTokenizer (0) | 2025.04.07 |
BufferedReader (0) | 2025.04.07 |
StringBuilder (0) | 2025.04.07 |