💡 문제

📝 코드
1. Scanner

2. BufferedReader


💻 풀이
1. Scanner 클래스를 사용하여 입력받기
1. Scanner 클래스를 import하기
import java.util.Scanner;
2. 객체 생성
Scan scan = new Scanner(System.in);
3. 입력 받기
- scan.nextInt(): 정수를 입력받는다.
- scan.nextLine(): 문자열을 입력받는다.
2. BufferedReader 클래스를 사용하여 입력받기
BufferedReader를 사용하는 이유
- 속도
: 백준 프로그램에서 BufferedReader는 Scanner보다 약 7배 이상 빠른 것을 알 수 있습니다. 입력 데이터가 많아질 수록 성능 차이는 커집니다.


- why? buffer의 크기 차이
- Scanner는 1KB로 입력을 받을 때마다 전송합니다.
- BufferedReader는 8KB로 buffer에 입력들을 buffer에 저장하였다가 한 번에 전송합니다.
: 짧은 입력에서는 Scanner가 효율적일 수 있지만 입력이 길 경우 속도차이는 커집니다.
- Scanner는 입력을 읽는 과정에서 정규표현식, 입력값 분할, 파싱 과정 등을 거치기 때문에 속도가 느립니다.
BufferedReader 사용법
1. 클래스 import 하기
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader
📌 예외처리를 해주는 이유?
readLine() 메서드는 입력값이 없을 때의 예외처리를 해야하기 때문이다.
2. 객체 생성
BufferedReader br = new bufferedReader(new InputStreamReader(System.in));
3. 입력값 받기
String str = br.readline();
📌 BufferdReader는 개행문자(Enter값)만 경계로 인식하고 입력받은 데이터가 String으로 고정된다.
4-1. StringTokenizer와 nextToken으로 한 문자씩 받기
StringTokenizer str = new StringTokenizer(br.readline(), " ");
4-2.String[] 배열로 한 문자씩 받기
String[] str = br.readline().split(" ");