본문 바로가기

카테고리 없음

[Java] BufferedReader사용법 (feat. 알고리즘)

기본 개념

  • Scanner : 입력을 받을 시, 공백(space)이나 Enter를 모두 경계로 인식함
    nextInt(), next(), nextchar() 등 다양한 형식의 데이터 입력가능

  • BufferedReader : Enter만 경계로 인식함, String으로만 데이터 인식
    장점 : 알고리즘의 시간을 줄일 수 있다.

 

case별 BufferedReader 사용 방법 

1. 공백을 포함하지 않는 Int형

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
int n = Integer.parseInt(br.readLine());

BufferedReader를 통한 선언 -> readLine() 메소드를 통해 String으로 입력받음

=> Integer.parseInt() 메소드를 통해 int형으로 형변환

 

2. 공백을 포함하는 경우의 Int형

방법 1) StringTokenizer 이용 (Default값 = " ")

public class Example {
	public static void main(String[] args) throws IOException {
    
    	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        
        int a = Integer.parseInt(st.nextToken());
        int b = Integer.parseInt(st.nextToken());
        int c = Integer.parseInt(st.nextToken());
        
        System.out.println("a의 값:"+a+", b의 값 :"+b+", c의 값 :"+c);
}

 

출력 결과

// input : 3 6 9
// output : a의 값 : 3, b의 값 : 6, c의 값 : 9

 

배열에서의 사용

String s1 = br.readLine();
StringTokenizer st1 = new StringTokenizer(s1);

for(int i=0; i<road.length; i++) {
	road[i] = Long.parseLong(st1.nextToken());
}

String s2 = br.readLine();
StringTokenizer st2 = new StringTokenizer(s2);

for(int i=0; i<liter.length; i++){
	liter[i] = Long.parseLong(st2.nextToken());
}

입력받은 문자열을 StringTokenizer에 넣은 후, nextToken() 메소드를 통해 공백단위로 인식.

 

방법 2) StringTokenizer 이용 (Default값 = " ")

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

String s = br.readLine();
String arr[] = s.split(" ");

int a = Integer.parseInt(arr[0]);
int b = Integer.parseInt(arr[1]);
int c = Integer.parseInt(arr[2]);

문자열을 split() 메소드를 통해 공백 단위의 분할 후 문자열 배열에 저장

=> 각 문자열 배열에 저장된 값을 Integer.parseInt() 메소드를 통해 정수형으로 변환

 

 

 

 

 

 

 

 

 


Reference

https://gyuwon95.tistory.com/48