15552번: 빠른 A+B
https://www.acmicpc.net/problem/15552
# 코드
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 와 BufferedWriter
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
// 테스트 케이스의 개수 T 입력받기 (int형으로 변환)
int t = Integer.parseInt(br.readLine());
// 각 테스트 케이스, 즉 두 정수의 문자열 분리를 위한 StringTokenizer
StringTokenizer st;
for (int i = 0; i < t; i++) {
// 매 반복마다(=라인마다) StringTokenizer 생성과 동시에 문자열 입력받기 (" "를 구분자로 하여 문자열 분리)
st = new StringTokenizer(br.readLine()," ");
// StringTokenizer.nextToken()으로 분리된 토큰을 반환하는데,
// 반환되는 타입이 String이므로 Integer.parseInt()를 통해 int형으로 변환
// 변환한 두 토큰을 더해준 값을 BufferedWriter.write()에 넣어준다.
bw.write((Integer.parseInt(st.nextToken()) + Integer.parseInt(st.nextToken()))+ "\n");
}
// Reader 버퍼 닫기
br.close();
// Writer 버퍼 비운 뒤(flush) 닫기(close)
bw.flush();
bw.close();
}
}
- Java에서 빠른 입출력을 위해서는 Scanner와 System.out.println 대신 BufferedReader와 BufferedWriter를 사용해야 한다고 한다.
- Scanner나 System.out.println을 사용할 경우 내부적으로 정규식을 남발하기 때문에, 테스트 케이스가 늘어나면 늘어날수록 System.out.println 호출횟수에 의해 시간초과가 발생할 수 있기 때문이다.
- 코딩테스트에서 시간단축은 매우 중요하기 때문에 앞으로의 문제풀이는 내사랑 Scanner와 작별하고 br, bw와 친해져보겠다. :) ..........
'코딩테스트 > 자바 문제풀이' 카테고리의 다른 글
[새싹: 문자열 (1)] 백준 11654, 2743, 2744 (0) | 2024.07.07 |
---|---|
[새싹: 배열] 백준 10871, 10807, 5597, 2738 (0) | 2024.07.06 |
[새싹: 반복] 백준 2741, 10872, 10950, 10952, 2739, 2438, 10951 (0) | 2024.07.04 |
[새싹: 조건] 백준 1330, 9498, 14681, 2753, 2420 (0) | 2024.07.03 |
[새싹: 입력과 계산] 백준 1000, 1001, 10998, 10869, 1008, 11382 (0) | 2024.07.02 |