- 알고리즘 측면에서, 자바에서 Scanner로 입력받고, system.out.println으로 출력하는 것보다,
BufferedReader와 BufferedWriter를 쓰면 처리속도가 더 빠르다.
특히 데이터의 양이 많아질수록 Scanner와 BufferedReader/BufferedWriter의 차이는 더 커진다.
또한, BufferedReader는 문자열에 최적화되었고, Scanner는 다양한 기능을 지원해서 무겁기도 하다.
[입력]
public static void main(String[] args) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
}
이 때 함께 언급는 것이 StringTokenizer의 nextToken이다.
StringTokenizer는 공백 자리를 제외하고 문자열을 채우도록 한다. StringTokenizer의 nextToken()메소드는 단순히 공백 자리를 땡겨 채우는 것이다.
[출력]
이때, close()로 마무리된다는 점과 write로 출력할 때 String으로 무조건 변환해야 한다는 점을 잊지 말아야 한다.
public static void main(String[] args) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
bw.write();
bw.close();
}
그럼 버퍼란 무엇인가?
CPU와 RAM사이에 작업처리 속도는 빠르지만, 키보드나 마우스처럼
외부 입력장치에 대한 반응속도는 느리다. 그래서 우리가 키보드에 데이터를 입력하여 프로그램에 바로 전달하는 게 속도관점에서 효율적이지 않다.
따라서 버퍼라는 중간다리를 두고 외부 입력장치와 프로그램 사이에 데이터 전달속도를
빠르게 한다.
아래 그림을 보면, 양방향 화살표에 나타난 말풍선처럼 각각 전달속도가 빠르거나 느린데,
버퍼라는 중간다리를 통하면 키보드나 마우스 등으로 입력하는 내용이 빠르게 전달될 수 있다.
'03. Algorithm' 카테고리의 다른 글
[Java] Recursion(재귀)의 특징 (0) | 2024.06.19 |
---|---|
[알고리즘] 간단하게 이해한 시간복잡도(feat. Java) (0) | 2024.06.19 |