seong
백준 15552번 (BufferedReader, StringTokenizer) 본문
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보다 속도가 빠르고 효율적이다.