알고리즘 풀이/백준(BOJ)

[JAVA/백준15552] 빠른 A+B

닥스훈스 2019. 5. 26. 01:29

1. 문제

 

2. 풀이

Scanner대신 BufferedReader를 사용하여 입력 받을 경우 Enter로만 인식하고 데이터가 String으로 고정되기 때문에 작업 속도가 훨씬 빠르다. readLine()으로 입력을 받을시 리턴값은 항상 String이므로 다른 타입으로 입력받으려면 적절한 형변환이 필요하다. 그리고, 예외처리를 해주어야 하는데 대개 throws IOException을 넣어준다.

BufferedReader를 이용하여 공백단위로 데이터 가공하기
1. StringTokenizer의 nextToken()함수를 사용하여 readLine()를 통해 입력받은 데이터를 공백 단위로 구분하여 순서대로 호출할 수 있다.

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()); //다음 호출

2. String.split(" ")함수를 사용하여 공백 단위로 끊어서 배열에 넣어 구분할 수 있다.

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] data = br.readLine().split(" ");

BufferedWriter를 이용하여 데이터 출력하기
많은 양을 출력할 경우 System.out.println("")보다 BufferedWriter를 사용하는것이 더 좋다.
버퍼 사용 후 마지막에는 flush()와 close()를 반드시 해주어야 하며, 개행을 해주어야 할 경우 "/n"를 넣어서 처리한다.

 BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
 String[] word = br.readLine().split(" ");
 int a = Integer.parseInt(word[0]);
int b = Integer.parseInt(word[1]);
bw.write((a+b) + "\n"); //출력
bw.flush(); //남아있는 모든 데이터를 출력시킴
bw.close(); //스트림을 닫음

 

3. 소스코드

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

public 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));
		try {
			int n = Integer.parseInt(br.readLine());

			for (int i = 0; i < n; i++) {
				String text = br.readLine();
				String[] word = text.split(" ");
				int a = Integer.parseInt(word[0]);
				int b = Integer.parseInt(word[1]);
				bw.write((a + b) + "\n");
			}
			bw.flush();
			bw.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}