Algorithms 🚀/Baekjoon

[백준/1546번] 평균

728x90

www.acmicpc.net/problem/1546

 

1546번: 평균

첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보

www.acmicpc.net

 

 

오늘도 배열 알고리즘을 풀어봤습니다. 그렇게 어렵진 않은 문제이고 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