seong

백준 15552번 (BufferedReader, StringTokenizer) 본문

알고리즘/백준

백준 15552번 (BufferedReader, StringTokenizer)

hyeonseong 2022. 7. 29. 10:18
import java.io.*;
class Main{
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        int n = Integer.parseInt(br.readLine());
        for(int i = 0; i < n; i++){
            String s = br.readLine();
            int a = Integer.parseInt(s.split(" ")[0]);
            int b = Integer.parseInt(s.split(" ")[1]);
            bw.write(a+b+"\n");
        }
        bw.flush();
        bw.close();
    }
}

BufferedReader 란?

  • 입력한 값을 버퍼의 형태로 읽어준다.
  • 출력을 System.out.println();으로 할 수 있지만 BufferedWrite가 있다.
    • 데이터가 많을 경우 System.out.println();보다  BufferedWrite의 처리 속도가더 빠르다.
  • 입력 받은 데이터의 값은 String으로 고정된다.
    • 만약 숫자를 사용 하고 싶다면 입력받은 이후 형변환을 해주어야한다.
    • Integer.parseInt();
  • 예외처리를 꼭 해주어야한다.(try & catch 또는 throws IOException) 

 

BufferedReader의 데이터 space 인식 받는 방법

1. .split(" ");  

  • 공백을 기준으로 나눠준다.
  • 만약 split(","); 이라면 ,을 기준으로 나눠준다.

 

2. StringTokenizer

형태

  • StringTokenizer st = new StringTokenizer(문자열);
  • StringTokenizer st = new StringTokenizer(문자열,구분자);
    • 구분자를 기준으로 나눈다.
  • StringTokenizer st = new StringTokenizer(문자열,구분자,boolean값); 
    • boolean 값은 구분자를 출력할지 말지를 결정

2-1 저장되어 있는 문자열을 일정한 문자를 기준으로 끊어 주는 방법

	// 1번째 방법 .split(" "); 메소드
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    String [] str = br.readLine().split(" "); // 공백을 기준으로 나눈다.
    
    //2번째 방법 StringTokenizer
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    StringTokenizer st = new StringTokenizer(br.readLine)); // Buffered로 읽어 st에 저장해준다.
    
    //2-1 방법 특정 문자 기준으로 끊어 주는 방법
    String str = "자바 C언어 파이썬"
    StringTokenizer st = new StringTokenizer(str);
    // 자바
    // C언어
    // 파이썬
    
    String str = "123!456!789";
    StringTokenizer st = new StringTokenizer(str, "!");
    // 123
    // !
	// 456
    // !
	// 789
 
 	//boolean값이 false 이면 "#"는 단순 구분만 해주고 출력은 하지않는다.
    String str = "자바#C언어#파이썬"
    StringTokenizer st = new StringTokenizer(str, "#", false);
    // 자바
    // C언어
    // 파이썬
    
    //123 456 789 String로 저장
    st.nextToken();// 123
    st.nextToken();// 456
    st.nextToken();// 789

 

 

Scanner와 BufferedReader의 차이

Scanner

  • Space, Enter 모두 경계 값으로 인식을 한다.
  • 대량의 데이터를 다루면 속도가 느려진다.

 

BufferedReader

  • Enter만 경계 값으로 인식을 한다.
  • BufferedReader로 Space를 인식 하기 위해서 추가로 적어주어야한다.
  • 대량의 데이터를 다루는 기준으로 Scanner보다 속도가 빠르고 효율적이다.

 

 

 

 

'알고리즘 > 백준' 카테고리의 다른 글

백준 10952번  (0) 2022.07.29
백준 2741번  (0) 2022.07.29
백준 8393번  (0) 2022.07.29
백준 10950번  (0) 2022.07.29
백준 2739번  (0) 2022.07.29