https://www.acmicpc.net/problem/15552
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int testCase = Integer.parseInt(bf.readLine());
for (int plusLoop = 0; plusLoop < testCase; plusLoop++) {
String str = bf.readLine();
int numA = Integer.parseInt(str.split(" ")[0]);
int numB = Integer.parseInt(str.split(" ")[1]);
bw.write(numA + numB + "\n");
}
bw.flush();
}
}
주의할 점
- 시간제한은 1.5초, 즉 1500ms 이내여야 함
- Scanner 사용하면 시간 초과 (Scanner는 키보드의 입력이 키를 누르는 즉시 바로 전달되지만, 버퍼는 모아두거나 개행 문자가 나타나면 버퍼의 내용을 한 번에 전송해서 빠름)
- System.out.println() 도 사용하면 시간 초과 (호출횟수 증가로 인함)
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int testCase = Integer.parseInt(bf.readLine());
BufferedReader, BufferedWriter를 사용하려면 IOException을 사용해야 합니다.
테스트 케이스 값인 T는 최대 1,000,000개 라고 했으니 입력 받는 줄 전체를 읽어서 정수로 변환하는 작업이 필요하므로 int 타입을 사용해야 합니다.
입력 받는 줄 전체를 readLine()으로 받아오는데, String 타입으로 받아오기 때문에 Integer.ParseInt()로 숫자 변환을 합니다. 이후 testCase에 대입합니다.
for (int plusLoop = 0; plusLoop < testCase; plusLoop++) {
String str = bf.readLine();
int numA = Integer.parseInt(str.split(" ")[0]);
int numB = Integer.parseInt(str.split(" ")[1]);
bw.write(numA + numB + "\n");
}
bw.flush();
}
테스트케이스에 입력된 수만큼 반복합니다. bf.readLine()을 이용하여 사용자로부터 A+B을 할 숫자를 입력 받습니다.
사용자가 1 1 과 같이 입력을 하는데, 우리 눈에는 숫자 띄어쓰기 숫자로 보이지만 컴퓨터 입장에서는 숫자가 나열된 문자열로 보이기 때문에 String 타입 변수로 받습니다.
split() 은 특정 문자를 기준으로 문자열을 나누어 배열에 저장하는 함수입니다. " " 가 기준이 되었으므로 띄어쓰기가 나온다면 문자열을 나눈다는 뜻이고, 나눈 것의 첫 번째 값 ([0])을 numA에 저장하고, 두 번째 값 ([1])을 numB에 저장합니다.
bw.write()는 매개변수가 int형일 때는 char형으로 출력하지만 매개변수가 String일 때는 String 타입으로 출력합니다.
그래서 A+B 자체를 String형으로 변환해주거나, A + B + "\n" 을 붙여주면서 문자열로 바꾸어주면 문제에서 원하는 대로 출력이 됩니다.
이후 남아있는 값을 flush()를 이용하여 모두 출력합니다.
참고
'백준 > Java' 카테고리의 다른 글
[백준][Java] 2738 - 행렬 덧셈 (0) | 2023.07.27 |
---|---|
[백준][Java] 5597 - 과제 안 내신 분..? (0) | 2023.07.21 |
[백준][Java] 10807 - 개수 세기 (0) | 2023.07.20 |
[백준][Java] 10871 - X보다 작은 수 (0) | 2023.07.20 |
[백준][Java] 10952 - A+B - 5 (0) | 2023.07.11 |