카테고리:

업데이트:


최근 우아한 테크 코스를 준비하기 시작하면서 알고리즘 시험이 있어 미리 대비하려고 합니다.

이전에는 C++을 이용해 알고리즘 문제를 해결했지만 이번 우아한 테크 코스에서 알고리즘 시험을 볼때 백엔드 지원은 Java를 이용해야 한다고 합니다.

근데 이전에는 Java를 사용하며 값을 입력받는 기능이 필요없어 사용하지 않았지만 이번에 필요하게 되면서 정리해보고자 합니다.

Scanner

Scanner는 아래 코드와 같이 사용방법이 매우 단순합니다. Scanner 객체를 생성하며 매개변수로 System.in (InputStream)을 넘겨줘 사용자의 입력을 입력 받을 수 있도록 동작합니다.

하지만 Scanner는 입력을 읽는 과정에서 정규 표현식을 적용, 입력값 분할, 파싱 과정을 거치면서 낮은 성능을 보여주게 됩니다.

import java.util.Scanner;

...

Scanner scanner = new Scanner(System.in);

scanner.next(); // String 반환
scanner.nextLine(); // Line을 전부 읽어 반환
scanner.nextInt(); // int를 입력받아 반환

scanner.close(); // Scanner 종료

BufferedReader

반면 BufferedReader는 버퍼에 입력을 모아두었다가 내용을 전달하기 때문에 빠른 속도가 나오게 됩니다.

import java.io.BufferedReader;
import java.io.InputStreamReader;

...

BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));

bf.readLine(); // Line을 전부 읽어 반환
Integer.parseInt(bf.readLine()); // Line을 읽어 Int로 파싱
bf.read()   // 하나의 문자를 읽어 int형으로 리턴

댓글남기기