백준

[백준/java] 15552번 빠른 A+B

꿈꾸는야오옹 2023. 2. 6. 20:40

이 문제는 scanner와 system.out.println() 를 이용해서는 안된다.  속도 제한이 걸린 문제로서 BufferReader 와 BufferWriter를 이용해야한다.  바로 전송하는 것 보다, 중간에 메모리 버퍼를 두어서 데이터를 묶어 이동하는 것이 빠르기 때문이다.

 

public class Baek15552 {

	public static void main(String[] args) throws IOException {
		
		BufferedReader bf= new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		//입력
		int t = Integer.parseInt(bf.readLine());
		
		for(int i = 0; i < t; i++) {
			
			StringTokenizer st=new StringTokenizer(bf.readLine()); //입력
			
			int A = Integer.parseInt(st.nextToken());
			int B = Integer.parseInt(st.nextToken());
			int ans = A+B;

			bw.write(ans+"\n");
		}
		bf.close();
		
		bw.flush();
		bw.close();

	}

}

 

주의점! BufferReader는 라인 단위로 읽히기 때문에 StringTokenizer 공백 단위의 데이터 가공이 필요하다.

또한, write() 는 자동 개행이 되지 않기 때문에 "\n" 을 함께 입력해준다.

 

 

마지막으로 flush() 를 통해 남은 데이터를 다 출력하고, close() 로 사용을 종료해주자.

 

 

그리고 사용시 주의점은 아래의 게시물에 정리해두었는데 참고하면 좋다.

https://bokk-coding.tistory.com/46