Java - Scanner 대신 BufferedReader를 써보자

고라니·2022년 1월 21일
0

입력 면에서 Scanner 보다 BufferedReader가 꽤나 빠른 것을 알게 되어 적용해보았다.

  • 아직 적응 단계고, 시간복잡도만 잘 지키면 Scanner로도 잘 풀린다는 것으로 인지하고 있기 때문에 더 찾아보고 공부해봐야 한다.
  • 막 쓰는게 아님. 입력예제를 잘 봐야한다. 한 줄에 다 나온다면 BR로 받고 StringTokenizer로 잘라야함.
  • 그리고,, Scanner 를 쓴 코드 인터뷰에서 개선점을 물어보면 버퍼리더로 말해도 되는지도 찾아보기! 당연히 시간복잡도 줄이는 것이 정답인데 안떠오를 경우 ㅋ.ㅋ
//버퍼리더 ( throws IOException 필수, import java.io.* 필수 )
BufferedReader br = new BufferedReader(newInputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int K = Integer.parseInt(br.readLine());

//스캐너
Scanner in = new Scanner(System.in);
int N = in.nextInt();
int K = in.nextInt();


간단한 문제인데도 차이가 많이남. ( 전자가 Scanner+배열 / 후자가 BR, StringTokenizer, StringBuilder)

예시 백준 10952번 ( 매우쉬운 A+B 문제 )

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
 
public class Main {
 
	public static void main(String[] args) throws IOException {
 
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		StringTokenizer st;
		StringBuilder sb = new StringBuilder();
 
		while (true) {
			st = new StringTokenizer(br.readLine(), " ");
           		int a = Integer.parseInt(st.nextToken());
            		int b = Integer.parseInt(st.nextToken());
			if (a==0 && b==0) break;
            		sb.append( a + b );
			sb.append('\n');
		}
 
		System.out.println(sb);
	}
}
profile
공부를 열심히 하는 학부생

0개의 댓글