문제
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
해결
방대한 양의 데이터를 입출력할 시에는 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 |
결과
'Algorithm > Beakjoon' 카테고리의 다른 글
[Java] baekjoon 8958 : OX퀴즈 / 1차원 배열 (0) | 2021.08.27 |
---|---|
[Java] baekjoon 3052 : 나머지 / 1차원 배열 (0) | 2021.08.26 |
[Java] baekjoon 11022 : A+B - 8 / for문 (0) | 2021.08.24 |
[Java] baekjoon 11720 : 숫자의 합 / 문자열 (0) | 2021.08.04 |
[Java] baekjoon 11654 : 아스키 코드 / 문자열 (0) | 2021.08.03 |
댓글