문제 풀이/BAEKJOON

[백준/JAVA] 1546번. 평균

망고 ෆ 2021. 7. 31. 15:17

아직 BufferedReader를 사용하는 게 익숙하지 않아서 Scanner, BufferedReader를 이용해서 각각 풀어 보았다.

 

값 하나만 입력 받을 땐 상관없지만, 한 줄에 공백을 경계로 여러 값을 입력받기 위해서는 StringTokenizer를 사용해야 한다. BufferedReader를 이용해서 풀 때, 이 부분이 익숙하지 않아서 컴파일 에러가 많이 났던 것 같다.

 

문제
 

1546번: 평균

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

www.acmicpc.net

 

풀이 1

 

<Scanner 이용>

import java.util.Scanner;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		double[] score = new double[N];
		double M = 0;
		double sum = 0;
		
		for(int i=0; i<N; i++) {
			score[i] = sc.nextInt();
			if(M<score[i]) {
				M = score[i];
			}
		}
		for(int i=0; i<N; i++) {
			score[i] = score[i]/M*100;
			sum = sum + score[i];
		}
		System.out.println(sum/N);
    }
}

 

 

풀이 2

 

<BufferedReader 이용>

import java.io.*;
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());
        double[] score = new double[N];
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
        double M = 0;
        double sum = 0;
        
        for(int i=0; i<N; i++){
            score[i] = Double.parseDouble(st.nextToken());
            if(M<score[i]){
                M = score[i];
            }
        }
        for(int i=0; i<N; i++){
            score[i] = score[i]/M*100;
			sum = sum + score[i];
        }
        System.out.println(sum/N);
    }
}