자바에서 키보드 입력을 받을 때는 Scanner를 사용하는 방법과 BufferReader를 사용하는 방법이 있습니다.
알고리즘 문제를 풀 때는 시간이 중요하기 때문에 속도가 빠른 BufferReader를 많이 사용하곤 합니다.
Scanner는 1KB의 버퍼를 갖기 때문에 입력이 바로 전달되는 반면, BufferReader는 8KB 크기의 버퍼를 가져 buffer에 입력들을 저장했다가 한 번에 전송하기 때문에 속도가 빠릅니다.
또한, Scanner는 입력을 읽는 과정에서 내부에서 정규 표현식 적용, 입력값 분할, 파싱 과정 등을 거치기 때문에 속도가 느립니다.
BufferReader는 타입이 String타입으로 고정이 되어 있습니다. 그래서 Integer.ParseInt() 와 같은 메소드를 호출하여 형변환을 해주어야 합니다.
또한 BufferReader은 readLine()이라는 메소드를 호출하여 키보드 입력을 받습니다. 그런데 이 readLine은 엔터만 경계로 인식합니다.
그래서 알고리즘 문제를 풀 때 한 줄에 공백으로 기준으로 나눠진 정수가 주어지는 상황에서는 StringTokenizer를 필수적으로 사용해야 합니다.
'알고리즘' 카테고리의 다른 글
SWEA 1206. [S/W 문제해결 기본] 1일차 - View (D3) (0) | 2023.05.14 |
---|---|
C언어 백준 알고리즘 11047번 (동전0) (0) | 2023.01.05 |
C언어 - 백준 알고리즘 1065번 (한수) (0) | 2023.01.05 |
C언어 - 백준 알고리즘 4344번(평균은 넘겠지) (0) | 2022.12.21 |
C언어 - 백준 알고리즘 2884 알람시계 (0) | 2022.04.12 |