일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- java11
- MapReduce
- Scanner
- bufferdreader
- 스프링
- 프로그래머스
- restapi
- nodejs
- Apollo
- 조건문
- mysql
- redis
- ai
- Spring
- LangChain
- puppeteer
- TCP
- graphql
- 자바
- Android
- java
- 서버
- k8s
- mongodb
- 백준알고리즘
- Docker
- Mongoose
- eof
- 스프링부트
- HTTP
- Today
- Total
자라나라 개발머리
[JAVA] 왜 BufferdReader를 사용할까?/BufferdReader 사용 전후 비교 본문
왜 BufferdReader를 사용할까?
백준 알고리즘 풀이과정을 보다가 상위에 올라와 있는 풀이과정을 보면 대부분 Scanner말고 BufferedReader를 사용해서 입력을 받는다. 그래서 왜 스캐너 안쓰고 BufferedReader를 쓰는지 궁금해졌다.
BufferdReader와 Scanner의 차이에 대해선 아래 글에 너무너무 설명이 잘 돼 있다.
https://dlee0129.tistory.com/238
자바(JAVA) - Scanner & BufferedReader
자바(JAVA) - Scanner & BufferedReader 자바를 처음 배울 때 사용자(키보드) 입력받기 위해 보통 Scanner 클래스를 사용합니다. 하지만 알고리즘을 풀기 시작하면서 백준에서 Scanner를 사용하여 입력을
dlee0129.tistory.com
위 글에서 내가 궁금했던 부분만을 정리하자면,
스캐너말고 버퍼드리더는 쓰는 이유는?
스캐너보다 입력 받는 속도가 더 빠르기 때문이다.
스캐너보다 버퍼드리더가 더 빠른 이유?
버퍼드리더는 버퍼를 사용해서 데이터를 모았다가 한 번에 보내기 때문이다. 버퍼를 사용하지 않는 경우엔 키보드 키를 누를 때 마다 데이터가 보내진다.
BufferdReader 사용 전후 비교
백준 알고리즘 최근에 풀었던 문제에 Scanner 대신 BufferedReader를 써서 입력을 받아봤다. 외의 코드는 동일했다.
시간도 약 1/2 감소했고 메모리도 줄었다. 앞으로는 BufferdReader를 사용해서 작성해야겠다.
여담으로, 풀었던 문제들의 입력 조건 중에 '첫째줄에 빈칸을 사이에 두고 입력한다' 라는 표현이 계속 등장했었다.
스캐너 쓸 때는 그냥 무시하고 문제 풀었었는데, 버퍼드리더 쓰니까 왜 저렇게 입력하라는지 알게됐다.
BufferdReader로 데이터를 받은 뒤 StringTokenizer로 공백 단위로 가공해야 한다.
'Java' 카테고리의 다른 글
[JAVA 11] EOF 처리 방법 (Scanner, BufferedReader) (0) | 2022.08.08 |
---|---|
[JAVA 11] java.util.StringTokenizer 정리 (0) | 2022.08.07 |
[JAVA] BufferdReader read(), readLine() 차이 (0) | 2022.07.26 |
[JAVA] 조건문(if, switch) (0) | 2022.07.09 |
[JAVA] 자바 특징/코드 실행 과정/자바 가상 기계(JVM)의 특징 (0) | 2022.07.07 |