본문 바로가기
Algorithm/Beakjoon

[Java] baekjoon 15552 : 빠른 A+B / for문

by Amy97 2021. 8. 25.
728x90

문제 


https://www.acmicpc.net/problem/15552

 

15552번: 빠른 A+B

첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다.

www.acmicpc.net

해결 


출처 : https://jhnyang.tistory.com/92

방대한 양의 데이터를 입출력할 시에는 Scanner 보다 BufferedReader / BufferedWriter를 사용하는 것이 효율적이다. 버퍼에 입력받은 데이터를 저장해두었다가 한꺼번에 출력하므로 처리 속도가 빠르기 때문이다. 

 

BufferedReader

Enter만 경계로 인식하기 때문에 공백 단위로 데이터를 가공하려면 작업이 필요하다.

→ StringTokenizer 또는 String.split(" "); 사용

 

데이터를 읽는 readLine 메서드 리턴 값이 String으로 고정돼있다.
→ int형으로 변환해야 할 시 Integer.parseInt() 사용

예외 처리를 해주어야 한다.
→ throws IOException 

 

https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/io/BufferedReader.html

 

BufferedReader (Java SE 16 & JDK 16)

All Implemented Interfaces: Closeable, AutoCloseable, Readable Direct Known Subclasses: LineNumberReader public class BufferedReader extends Reader Reads text from a character-input stream, buffering characters so as to provide for the efficient reading of

docs.oracle.com

 

BufferedWriter

- 버퍼를 잡아 놓았기 때문에 flush() 또는 close()를 호출해서 마무리해줘야 한다.

 

https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/io/BufferedWriter.html

 

BufferedWriter (Java SE 16 & JDK 16)

All Implemented Interfaces: Closeable, Flushable, Appendable, AutoCloseable public class BufferedWriter extends Writer Writes text to a character-output stream, buffering characters so as to provide for the efficient writing of single characters, arrays, a

docs.oracle.com

구현 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import java.io.*;
import java.util.StringTokenizer;
 
public class Main {
 
   public static void main(String[] args) throws IOException {
      // TODO Auto-generated method stub
 
      BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
      BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
 
      int t = Integer.parseInt(br.readLine());
      int[] sumArr = new int[t];
 
      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());
         sumArr[i] = a + b;
      }
 
      for (int sum : sumArr) {
         bw.write(String.valueOf(sum));
         bw.newLine();
      }
 
      bw.flush();
 
   }
}
cs

결과 


 

728x90

댓글