https://www.acmicpc.net/problem/15552
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int x = scan.nextInt();
int[] rs = new int[x];
for (int i = 0; i < x; i++) {
rs[i] += scan.nextInt() + scan.nextInt();
}
scan.close();
for (int i = 0; i < x; i++) {
System.out.println(rs[i]);
}
}
}
이전 글과 같이 scanner를 이용할 시 시간초과로 문제 합격이 되지 않는다.
합격을 위해서는 scanner 대신 buffered를 사용해야한다.
scanner
설명
- 사용자가 입력을 쉽게 처리하도록 설계된 클래스. 주로 콘솔 입력에서 사용
장점
- 다양한 데이터 타입을 바로 읽을 수 있음(String, int, doubld)
- 공백을 기준을 입력을 분리
단점
- 속도가 느림(대량 데이터 입력 처리에 부적합)
BufferedReader
설명
- 입력을 한 줄 단위로 처리하거나 대량 데이터를 읽는데 적합
장점
- 속도가 빠름(대량 데이터에 유리)
단점
- String으로 데이터를 읽기 때문에 변환이 필요함
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader read = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter write = new BufferedWriter(new OutputStreamWriter(System.out));
int total = Integer.parseInt(read.readLine());
for (int i = 0; i < total; i++) {
String[] x = read.readLine().split(" ");
write.write(Integer.parseInt(x[0]) + Integer.parseInt(x[1]) + "\n");
}
write.flush();
read.close();
write.close();
}
}
BufferedReader read = new BufferedReader(new InputStreamReader(System.in));
BufferedReader 콘솔로부터 입력을 받기 위해 사용된다.
(Scanner와 동일하다고 보면된다.)
int total = Integer.parseInt(read.readLine());
몇개의 계산식을 쓸지 적는건데, read.readLine() String값으로 읽기 때문에 Integer.parseInt로 int화 시켜준다.
for (int i = 0; i < total; i++) {
String[] x = read.readLine().split(" ");
write.write(Integer.parseInt(x[0]) + Integer.parseInt(x[1]) + "\n");
}
String[] x = read.readLine().split(" ");
앞서 설명했듯이 BufferedReader는 기존에 Scanner와 달리 String으로 입력을 받기 때문에 띄워쓰기를 한다고 구분이 되지 않아 1 1 이렇게 입력을 해도 변수에 1 1로 저장이 된다.
그래서 배열을 만들어 " " 를 기준으로 각각의 데이터를 배열에 저장해준다.
write.write(Integer.parseInt(x[0]) + Integer.parseInt(x[1]) + "\n");
.write로 데이터를 기록(앞서 배열에 넣었던 값을 저장 후 줄바꿈을 해준다/write에 기록된 데이터는 BufferedWriter로 한 번에 불러올 수 있음)
write.flush();
for문으로 모든 계산의 결과값을 기록된것을 flush를 호출하여 기록된 데이터들을 출력한다.
'백준' 카테고리의 다른 글
백준 25304 영수증 (0) | 2025.01.02 |
---|---|
백준 8393 합 (0) | 2025.01.01 |
백준 10950 A+B -3 (0) | 2024.12.31 |
백준 2739 구구단 (1) | 2024.12.30 |
백준 2480 주사위 세개 (0) | 2024.12.29 |