반응형
https://www.acmicpc.net/problem/10818
며칠 전 백준 알고리즘 사이트를 들어갔다가 예전에 틀린 채로 남아있는 브론즈 문제가 있길래 풀었다.
문제는 매우 간단한 최소, 최대 관련 문제였는데 순간 호기심이 생겨서 입력을 한 번은 Scanner로, 또 한 번은 BufferedReader로 받아서 속도 차이를 확인해보았다. (나는 평소에 BufferedReader를 쓰는데, 이게 더 빠르다고는 했지만 얼마나 빠르다는건지 궁금했다^_^)
아래: Scanner를 사용한 코드
import java.util.Scanner;
public class Main {
static int N, min = Integer.MAX_VALUE, max = Integer.MIN_VALUE;
static int[] nums;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
nums = new int[N];
for (int i = 0; i < N; i++) {
nums[i] = sc.nextInt();
}
for (int n : nums) {
min = (min > n) ? n : min;
max = (max < n) ? n : max;
}
System.out.println(min + " " + max);
} // main
} // class
실행속도가 1464ms가 나왔다.
위: BufferedReader를 사용한 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static int N, min = Integer.MAX_VALUE, max = Integer.MIN_VALUE;
static int[] nums;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
nums = new int[N];
StringTokenizer st = new StringTokenizer(br.readLine());
for (int i = 0; i < N; i++) {
nums[i] = Integer.parseInt(st.nextToken());
}
for (int n : nums) {
min = (min > n) ? n : min;
max = (max < n) ? n : max;
}
System.out.println(min + " " + max);
} // main
} // class
실행속도가 420ms가 나왔다.
<결론>
1464ms VS 420ms 으로 BufferedReader가 약 3.48배 빠른 속도를 보였다.
코드는 좀 길지만 한 번 익혀두면 훨씬 빠르고 다양한 입력을 받을 때도 편하게 사용할 수 있으니 BufferedReader를 씁시다.
- 호기심 충족했으니 끝😄😆 -
반응형
'📚Languages > JAVA 개념·문법·에러' 카테고리의 다른 글
[JAVA 에러] StringTokenizer와 nextToken() 사용 중 발생한 NoSuchElementException (0) | 2020.05.15 |
---|
댓글