알고리즘/백준

[백준] 15552 - 빠른 A+B

leegeonwoo 2023. 10. 18. 05:44

 

 

• 문제

이전에 풀었던 A+B와 같은문제입니다. 하지만 빠른 A+B라고 되어있는만큼 이 문제에서는 시간제한이 1초로되어있습니다.


• 풀이

이 문제를 일반적인 Scanner를 이용하여 입력을 받거나

System.out.println() 출력을 사용하게 된다면

 

 

위와 같이 런타임 에러가 나오게됩니다.

 

여기서 입력값을 받을 때 BufferedReader를 사용하고 출력은 BufferdWriter를 사용하여 문제를 풀어보도록 하겠습니다.

 

BufferedReader에 대한 대략적인 설명은 아래 링크를 참조해주시거나 다른 좋은 설명글도 많으니 한 번쯤은 보시는 걸 추천드립니다!

후에 StringTokenizer에 대한 포스팅도 하고 링크 추가해놓겠습니다!

 

 

[Java] - BufferedReader

역할 BufferedReader를 한 문장으로 정리하자면 Byte타입으로 전송되는 데이터를 Char형으로 변환하고 버퍼링을 적용하여 Char데이터를 반환한다. Char타입으로 반환된다고 했는데 왜 문자열로 출력되

lee-dev-log.tistory.com

 

 

BufferedWriter

역할 BufferedWriter는 버퍼를 이용하여 데이터의 출력을 다루는 함수입니다. 버퍼를 사용한다는 것은 버퍼에 출력문자열을 저장했다가 버퍼가 다 차거나 사용자의 코드로(flush) 요청이 들어오면 버

lee-dev-log.tistory.com

 

 

 

먼저 테스트케이스의 개수 T를 입력고나서 T를 조건식으로 만들어 반복문을 만들어 정수 A와B를 받아준다.

문제 자체는 이전에 풀어봤던 A+B문제와 같고 입출력만 다른 부분이니 문제자체보다는 입출력방법을 중점으로 설명하도록하겠다.

 

 

코드를 먼저 살펴보며 설명해보도록 하겠다.

 

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

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));
		int T = Integer.parseInt(br.readLine());
		for(int i=0; i<T; i++) {
			StringTokenizer st = new StringTokenizer(br.readLine(), " ");
			int A = Integer.parseInt(st.nextToken());
			int B = Integer.parseInt(st.nextToken());
			bw.write(A+B + "\n");
		}
		bw.flush();
	}
}

 

먼저 StringTokenizer타입의 st인스턴스를 생성해주고 br.readLine()으로 입력을 받는데 이 때,

우리는 정수 A,B를 입력받을 때 공백(" ")을 구분으로 하여 A B를 구분하기 때문에 StringTokenizer객체의 생성자를(br.readLine() , " ")로 호출해준다.

 

st.nextToken()으로 구분된 각 토큰의 값을 A와 B에 저장하는데 이 때, String타입으로 반환되었으므로 Integer.parseInt를 사용하여 정수형으로 타입을 변환해준다.

 

그리고나서 bw.write메서드를 사용하여 버퍼에 더한 값을 저장해주고

bw.flush()를 통해 출력한다.

 

 


 

728x90