728x90
오늘도 배열 알고리즘을 풀어봤습니다. 그렇게 어렵진 않은 문제이고 2가지 방법을 이용해서 풀어봤습니다 🎉
1. Scanner + 배열
2. BufferedReader + StringTokenizer + 배열
풀이 🎉
1. Scanner + 배열
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
double sum = 0;
double[] arr = new double[N];
for(int i=0; i<N; i++) {
arr[i] = sc.nextInt();
}
sc.close();
Arrays.sort(arr);
// 최댓값
double M = arr[N-1];
for(int i=0; i<arr.length; i++) {
sum += arr[i] / M * 100;
}
System.out.println(sum / N);
}
}
스캐너를 이용해서 필요한 값을 받은 후 배열을 오름차순으로 정렬해서 최댓값을 얻은 후 결과값을 출력했습니다.
2. BufferedReader + StringTokenizer + 배열
package baekjoon.level5;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class BOJ_1546 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
double sum = 0;
double[] arr = new double[N];
String line = br.readLine();
StringTokenizer st = new StringTokenizer(line, " ");
int index = 0;
while(st.hasMoreTokens()) {
arr[index] = Integer.parseInt(st.nextToken());
index++;
}
Arrays.sort(arr);
double M = arr[N-1];
for(int i=0; i<arr.length; i++) {
sum += arr[i] / M * 100;
}
System.out.println(sum / N);
}
}
스캐너가 BufferedReader와 StringTokenizer로 바뀐 것 빼고는 똑같은 코드입니다.
제출 번호: 25943729 -> BufferedReader + StringTokenizer + 배열
제출 번호: 25943303 -> Scanner + 배열
역시 스캐너보다 BufferedReader가 메모리도 덜 사용하고 훨씬 빠르다는 것을 확인할 수 있습니다!!
스캐너는 간단하게 사용할 수는 있지만 BufferedReader가 효율성 측면에선 훨씬 좋기 때문에 BufferedReader를 사용합시다!!
728x90
'Algorithms 🚀 > Baekjoon' 카테고리의 다른 글
[백준/8958번] OX퀴즈 (0) | 2021.02.16 |
---|---|
[백준/3052번] 나머지 (0) | 2021.02.02 |
[백준/2577번] 숫자의 개수 (0) | 2021.02.01 |
[백준/10818번] 최소, 최대 (0) | 2021.02.01 |
[백준/1541번] 잃어버린 괄호 [Java] (0) | 2021.01.21 |