[백준] 10950. A+B (3)

bonnie·2021년 12월 30일
0

🟢 알고리즘 풀이

목록 보기
3/27

문제

https://www.acmicpc.net/problem/10950

풀이

먼저 테스트 케이스 숫자를 입력 받은 후, 그 숫자만큼 테스트를 시행하고 각 테스트는 한 줄에 두개의 정수를 입력 받는다.(공백으로 숫자를 구분)
숫자를 모두 입력 받으면 각 줄에 입력 받은 두 수의 합을 출력한다.
이번에는 Scanner와 BufferedReader를 각각 사용해보았다.

코드

Scanner

먼저 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

먼저 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로 해봐야겠다.

  • Scanner와 BufferedReader 비교
    상단이 Scanner이고 하단이 BufferedReader이다.
profile
괴발🐱개발🐶

0개의 댓글