백준
[백준/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() 로 사용을 종료해주자.
그리고 사용시 주의점은 아래의 게시물에 정리해두었는데 참고하면 좋다.