| Scanner 와 BufferedReader의 차이

이번 글은 자바를 처음 배울때 한번쯤은 써봤을 법한 클래스인 Scanner와 프로그래밍에 조금 더 익숙해지거나 특히 알고리즘 문제를 풀다가 자주 접하게 될 BufferedReader 클래스의 차이에 대해 알아보겠습니다.

결론부터 말하자면 가장 큰 차이점은 속도!!

 

package milk;

import java.util.Scanner;

public class study {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);

		System.out.println("원하는 숫자를 입력하세요");
		String input = scanner.nextLine();
		int num = Integer.parseInt(input);

		System.out.println(num);
	}

}

 

우리는 보통 자바를 처음 배울때 콘솔에서 입력을 받기 위해 이러한 방식을 많이 사용했을 것이다. 하지만 Scanner는 편리하지만 속도가 느리다는 단점이 있어 특히 알고리즘 문제를 풀때 시간초과 에러를 내는 치명적인 단점이 있습니다. 하하지만  BufferedReader 를 아래와 같이 사용한다면 버퍼를 사용하기 때문에 입력 속도에서 확연히 줄일 수 있습니다.

package milk;

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

public class study {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // 선언
		String s = br.readLine(); 
		int i = Integer.parseInt(br.readLine()); 
		
		System.out.println("String : " + s);
		System.out.println("Int : " + i);
		
	}
}

 

 

 

각 언어마다 입력방식에 대한 속도가 차이가 조금씩 있습니다. 알고리즘 사이트에서 보면 C/C++이 JAVA 보다 실행속도가 빠른 이유가 여기에 있습니다.

입력방식에 따른 속도 차이






+ Recent posts