728x90
자바를 이용해 백준 문제들을 풀다 보면, Scanner 를 이용해 입력받으면 시간 초과가 나는 경우를 경험할 수 있다.
이는 Scanner보다 더 빠르게 처리해주는 BufferedReader 를 이용해 입력받으면 해결이 가능하고,
BufferedReader를 이용해 입력받았는데도 시간 초과가 난다면 내 알고리즘을 다시 체크해봐야 한다.
[BufferedReader 선언방법]
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedReader 는 해당 방식으로 선언할 수 있다.
[String 입력방법]
readLine() 은 입력값으로 들어온 데이터를 한 줄로 읽어서 String 으로 만드는 메소드이다.
String str = br.readLine();
[ int형 입력방법]
int num = Integer.parseInt(br.readLine());
readLine() 은 입력값을 String으로 처리하므로 Integer.parseInt() 를 이용하여 입력받는다.
[ 한 줄에 여러 개를 입력받고 싶은 경우]
StringTokenizer st = new StringTokenizer(br.readLine());
String str = st.nextToken();
int num = Integer.parseInt(st.nextToken()); // 첫번째 방법
String[] strs = br.readLine().split(" "); // 두번째 방법
두 가지 방법이 있는데,
첫 번째는 StringTokenizer를 이용할 경우, 생성자에 입력받을 문자를 입력 후 nextToken()을 이용해 하나씩 가져올 수 있다.
공백이 아닌 특정 문자 기준으로 자르고 싶을 때에는 new StringTokenizer(br.readLine(), "자를문자"); 로 자를 수 있다.
두번째는 String [] 배열로 입력받고, split() 함수의 인자로 자를 문자를 입력한다.
* 백준 문제를 자바로 풀다보면 BufferedReader를 자주 사용하게 되어, 정리해보았다.
728x90