
https://www.acmicpc.net/problem/10950
먼저 테스트 케이스 숫자를 입력 받은 후, 그 숫자만큼 테스트를 시행하고 각 테스트는 한 줄에 두개의 정수를 입력 받는다.(공백으로 숫자를 구분)
숫자를 모두 입력 받으면 각 줄에 입력 받은 두 수의 합을 출력한다.
이번에는 Scanner와 BufferedReader를 각각 사용해보았다.
먼저 test case number인 t를 입력 받은 후 t개의 배열을 생성한다. 그 후 반복문을 t번만큼 돌리면서 두 정수를 각각 입력을 받고, 배열에 두 정수의 합을 각각 넣어준다.
배열이 다 채워지면 배열을 출력한다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
int[] arr = new int[t];
for(int i = 0; i < t; i++) {
int a = sc.nextInt();
int b = sc.nextInt();
arr[i] = a + b;
}
sc.close();
for(int r : arr) {
System.out.println(r);
}
}
}
먼저 BufferedReader를 통해 test case number인 t를 입력 받고 그 수 받큼 반복문을 돌리는 것은 Scanner와 동일하다.
차이점은 반복문 안에서 StringTokenizer를 이용하는 것!
StringTokenizer는 내가 지정한 구분자(delimiter)로 문자열을 쪼개주는 클래스이다.
보통 StringTokenizer st = new StringTokenizer(br.readLine(), "구분자"); → 요런 방법으로 사용한다. 이 때 구분자는 생략도 할 수 있는데 생략이 가능한 구분자는 공백문자이다.
StringTokenizer에 구분자를 이용해서 문자열을 입력한 후 nextToken()으로 문자열을 하나씩 가져올 수 있다. (String타입이기 때문에 Integer로 parsing 해줘야함)
이렇게 입력 받은 숫자들을 출력하는 방법에도 여러가지가 있는데 이번에는 BufferedWriter를 써봤다. 왠지 BufferedReader와 짝궁인것 같은 느낌이 들어서ㅎㅎ
write를 통해 두 정수의 합을 한줄씩 출력하면 끝!
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 br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int t = Integer.parseInt(br.readLine());
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());
bw.write(Integer.toString(a+b) + "\n");
}
bw.flush();
}
}
이 방법 외에도 StringBuilder에 두 정수의 합을 append해서 한번에 출력하는 경우도 가능!
Builder를 쓰면 코드길이가 더 단축되니 다음에는 builder로 해봐야겠다.
