코딩 테스트(Java)에 자주 등장하는 BufferedReader에 대해

KIMA·2022년 12월 4일
0

java

목록 보기
5/10
post-thumbnail

입력에 필요한 BufferedReader와 Scanner

코딩 테스트에서 주어진 데이터를 입력받기 위해 BufferedReader 또는Scanner를 사용한다.

Scanner는 입력을 띄어쓰기와 개행 문자를 경계로 가져오고 데이터 타입을 그대로 가져올 수 있어 추가적인 작업이 필요없지만,
BufferedReader는 입력을 개행 문자만을 경계로 가져오고 데이터 타입은 String으로만 제한되어 있기때문에 추가적인 작업이 필요하다.

따라서 BufferedReader를 사용할 경우, 문자열을 특정 문자를 기준으로 분리해주는 StringTokenizer와 타입 변환 함수(예시. Integer.parseInt(String str))도 같이 쓰이는 편이다.

BufferedReader가 Scanner보다 빠른 이유

사용자로부터 입력을 받을 때, 버퍼를 사용하지 않는다면 키보드의 입력이 즉시 프로그램으로 전달된다.
하지만, 버퍼를 사용한다면 키보드의 입력이 버퍼로 전달된다.
이때, 버퍼가 가득 차거나 개행 문자가 나타나면 프로그램으로 버퍼의 내용을 한 번에 전송한다.

BufferedReader 사용법

  • 입력

    1 3
  • 입력을 BufferedReader로 받아오는 코드

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    StringTokenizer st = new StringTokenizer(br.readLine());
    int N = Integer.parseInt(st.nextToken());
    int K = Integer.parseInt(st.nextToken());

InputStreamReader은 또 뭐지?

System.in와 같은 InputStream는 바이트 단위의 데이터를 문자 단위가 아닌 1byte씩 가져오므로 문자를 온전히 가져올 수 없다.
따라서 InputStreamInputStreamReader로 감싸줘 바이트 단위 데이터를 문자 단위로 처리할 수 있게 해준다.

Reference

profile
안녕하세요.

0개의 댓글