15552번: 빠른 A+B
첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다.
www.acmicpc.net
문제
본격적으로 for문 문제를 풀기 전에 주의해야 할 점이 있다. 입출력 방식이 느리면 여러 줄을 입력받거나 출력할 때 시간초과가 날 수 있다는 점이다.
Java를 사용하고 있다면, Scanner와 System.out.println 대신 BufferedReader와 BufferedWriter를 사용할 수 있다. BufferedWriter.flush는 맨 마지막에 한 번만 하면 된다.
입력
첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다.
출력
각 테스트케이스마다 A+B를 한 줄에 하나씩 순서대로 출력한다.
![](https://blog.kakaocdn.net/dn/qGZNn/btrBsGxW28C/yateETmFeEADIeD3lVeP80/img.png)
코드
import java.io.*;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out));
int testcase = Integer.parseInt(reader.readLine());
for(int i=0; i<testcase; i++){
StringTokenizer st = new StringTokenizer(reader.readLine(), " ");
writer.write((Integer.parseInt(st.nextToken()) + Integer.parseInt(st.nextToken())+"\n"));
}
writer.flush();
writer.close();
}
}
전체적인 흐름
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out));
콘솔을 통해 입출력을 받기 위해서 (new InputStreamReader(System.in)), (new OutputStreamWriter(System.out))로 BufferedReader와 BufferedWriter를 초기화한다.
int testcase = Integer.parseInt(reader.readLine());
콘솔을 통해 테스트케이스로 입력받은 reader.readLine() 값을 변수 testcase에 저장한다. 여기서 주의할 점은 BufferedReader는 String 타입으로 입력받기 때문에 int 값으로 저장하기 위해서는 Integer.parseInt(reader.readLine())로 받아야 한다.
for(int i=0; i<testcase; i++){
StringTokenizer st = new StringTokenizer(reader.readLine(), " ");
writer.write((Integer.parseInt(st.nextToken()) + Integer.parseInt(st.nextToken())+"\n"));
}
for문을 통해 입력받은 테스트케이스 개수만큼 더할 수를 입력받아 덧셈 연산을 수행한다.
StringTokenizer st = new StringTokenizer(reader.readLine(), " ");
여기서 BufferedReader를 통해 입력받은 값은 String 타입이라 덧셈 연산 시 문자열의 결합으로 처리된다는 문제점이 있다. 때문에 먼저 StringTokenizer 클래스를 통해 입력받은 문자열 reader.readLine()을 " " 단위로 쪼개어 StringTokenizer 객체에 저장한다(입력 받을 때 " "로 두 수를 받았기 때문에 가능하다).
writer.write((Integer.parseInt(st.nextToken()) + Integer.parseInt(st.nextToken())+"\n"));
그리고 쪼개진 토큰을 nextToken() 메서드를 이용해 차례로 토큰을 읽고, Integer.parseInt() 메서드를 통해 int 타입으로 변환하고, Bufferedwriter의 write() 메서드를 이용해 출력하도록 한다.
writer.flush();
writer.close();
출력을 위해 flush() 메서드를 호출하고 닫아준다.
(Code reference)
[백준] 15552번 : 빠른 A+B - JAVA [자바]
https://www.acmicpc.net/problem/15552 15552번: 빠른 A+B 첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다...
st-lab.tistory.com
(BufferedReader reference)
Ways to read input from console in Java - GeeksforGeeks
A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.
www.geeksforgeeks.org
Java.io.BufferedReader Class in Java - GeeksforGeeks
A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.
www.geeksforgeeks.org
8 Difference between BufferedReader and Scanner in Java With Example | Java Hungry
DataTyperead String onlyread String as well as primitive data type
javahungry.blogspot.com
(BufferedWriter reference)
Java.io.BufferedWriter class methods in Java - GeeksforGeeks
A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.
www.geeksforgeeks.org
(flush reference)
What is the purpose of flush() in Java streams?
In Java, flush() method is used in streams. But I don't understand what are all the purpose of using this method? fin.flush(); tell me some suggestions.
stackoverflow.com
(StringTokenizer)
05/04/22 [1/2] [Java] 자바 자바 자바 기초 떼기
Java 1. 운영체제에 독립적이다 JRE(Java Runtime Environment: JVA; Java Virtual Machine + 표준 클래스 라이브러리)가 설치되어 있는 모든 운영체제에서 실행 가능하다 이전의 언어: 특정 cpu에서만 작동하거나..
romcanrom.tistory.com
며칠 전에 공부한 내용 까먹기 전에 바로 써먹었다 최고
'problem solving > baekjoon' 카테고리의 다른 글
java/ 백준 11286 절댓값 힙 (0) | 2022.07.21 |
---|---|
java/ 백준 5622 다이얼 (0) | 2022.05.15 |
java/ 백준 2577 숫자의 개수 (0) | 2022.05.09 |