[백준] 10950번 : A+B - 3 - JAVA [자바]
https://www.acmicpc.net/problem/10950
-
문제
매우 간단한 문제다!
※ 주의할 점
- 첫 줄에는 테스트 케이스 개 수가 주어진다.
- 한 케이스에는 두 정수가 공백 한 칸으로 구분되어 주어진다.
- 2가지 방법을 제시한다.
기본적으로 사람들이 가장 많이 알고 있는 Scanner 방식과
필자가 제출한 BufferedReader + StringTokenizer + StringBuilder 을 이용한 방식을 보여주고자 한다.
- 풀이
- 방법 1
import java.util.Scanner;
public class Main {
public static void main(String args[]) {
Scanner in = new Scanner(System.in);
int c = in.nextInt();
int arr[] = new int[c];
for (int i = 0; i < c; i++) {
int a = in.nextInt();
int b = in.nextInt();
arr[i] = a + b;
}
in.close();
for (int k : arr) {
System.out.println(k);
}
}
}
가장 기초적인 방법이자 정석적인 방법이지 않을까 싶다.
아마 대부분은 이런 방식으로 풀었을 것 같다.
원리는 각 배열 원소마다 입력받은 a 와 b를 더해주어 i 번째 배열에 저장하는 원리다.
- 방법 2
BufferedReader 을 쓰는 방식이다.
아무래도 BufferedReader 은 문자열로 받아들이게 되는데 우리가 원하는 건 한 줄에 정수 2개이니 공백을 기준으로 문자열을 분리해주어야 한다. 이를 위해 필자는 StringTokenizer 을 사용했다. ( split() 메소드보다 성능이 더 좋다! )
또한 배열을 따로 생성하여 저장했다가 다시 출력하는 방식보다는 StringBuilder 에 계산한 식을 넣어준 뒤 나중에 한 번에 출력해주는 방식을 택했다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
StringTokenizer st;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < N; i++) {
st = new StringTokenizer(br.readLine(), " ");
sb.append(Integer.parseInt(st.nextToken()) + Integer.parseInt(st.nextToken()));
sb.append('\n');
}
System.out.println(sb);
}
}
- 성능 차이
위에서 부터 순서대로
채점 번호 : 17705349 - Scanner 사용
채점 번호 : 17705338 - BufferedReader + StringTokenizer 사용
시간을 보면 BufferedReader 와 Scanner 의 성능 차이가 확연하게 나는 것을 볼 수가 있다.
맞은 사람 중 java 소스 보니까 랭크되어있는 시간이 72ms 였는데 아쉽다... 뭐 같은 코드여도 100번 정도 돌리면 나오긴 할 것 같다만 풀었다는 것에 의미를 두자.
- 정리
for 문 치고는 그렇게 어려운 수준은 아니었다. 아마 JAVA를 학습한 학생이라면 보통 2~3주 차쯤에 배우는 것이 반복문이니 금방 풀었으리라 본다.
'JAVA - 백준 [BAEK JOON] > 반복문' 카테고리의 다른 글
[백준] 11022번 : A+B - 8 - JAVA [자바] (10) | 2020.02.19 |
---|---|
[백준] 11021번 : A+B - 7 - JAVA [자바] (13) | 2020.02.19 |
[백준] 15552번 : 빠른 A+B - JAVA [자바] (34) | 2020.02.17 |
[백준] 8393번 : 합 - JAVA [자바] (5) | 2020.02.15 |
[백준] 2739번 : 구구단 - JAVA [자바] (5) | 2020.02.15 |