본문 바로가기

자바(JAVA)/자료구조 & 알고리즘

백준 1546 평균 자바 BufferedReader

백준 1546 평균 문제

 

백준 1546 평균 자바 BufferedReader 풀이

 

첫번째 방식

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
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());

		if (N > 1000) {

			return;

		}

		StringTokenizer st = new StringTokenizer(br.readLine(), " ");

		double score[] = new double[N]; // 원점수

		int M = 0;  // 최대값
		
		double sum = 0;

		for (int i = 0; i < N; i++) {

			int n = Integer.parseInt(st.nextToken());

			if (n < 0 || n > 100) {
				
				return;
			}

			score[i] = n;
			
			sum = sum + score[i];

			if (n > M) {
				M = n;
			}

		}

		br.close();

		System.out.println((sum / M * 100) / N);

	}

}

 

 

두번째 방식

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
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());

		if (N > 1000) {

			return;

		}

		StringTokenizer st = new StringTokenizer(br.readLine(), " ");

		double score[] = new double[N]; // 원점수

		double sum = 0;

		for (int i = 0; i < N; i++) {

			int n = Integer.parseInt(st.nextToken());

			if (n < 0 || n > 100) {

				return;
			}

			score[i] = n;

			sum = sum + score[i];

		}

		Arrays.sort(score);

		br.close();

		System.out.println((sum / score[N - 1] * 100) / N);

	}

}

 

 

결과는 첫번째 방식이 메모리 / 속도 측면에서 더 좋았다.