본문 바로가기
백준

[백준] 1546번 : 평균 – JAVA [자바]

by Hongwoo 2022. 7. 7.
반응형

https://www.acmicpc.net/problem/1546

 

1546번: 평균

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

www.acmicpc.net

 


  • 문제

 

 


  • 문제 풀이

백준 1546번 평균은 브론즈 1 난이도의 수학 문제이다. 이 문제에서는 먼저 시험을 본 과목의 개수 N이 주어지고 그다음 줄에 시험 성적 N개가 주어진다. 이 시험들 중에서 가장 잘 본 시험의 점수를 M이라고 하겠다. 그리고 모든 시험 점수를 가장 잘 본 시험 점수 M으로 나눠주고 다시 100을 곱한다. 새로 나온 시험 성적 N개의 평균을 구해서 출력해주면 되는 문제이다.

 

우선 시험 성적을 입력받을 때 최댓값 M도 같이 구해준다. 그리고 입력받는 모든 시험 성적을 double형 변수 sum에 더해준다. 이렇게 하는 이유는 시험 성적을 다 더한 다음 M으로 한 번만 나눠주기 위함이다. 성적을 다 더하고 M으로 나눈 다음 다시 100으로 곱해준다. 왜냐하면 이렇게 해야지 백분율이 아닌 점수가 되기 때문이다. 그리고 마지막으로 본 시험 과목의 개수 N으로 나눠주면 평균이 구해진다.

 

자세한 코드는 밑에서 참고할 수 있다.

 


  • 코드

 

import java.io.*;
import java.util.*;
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());
        int m = 0;
        StringTokenizer st = new StringTokenizer(br.readLine());
        double sum = 0;
        for (int i = 0; i < n; i++) {
            int num = Integer.parseInt(st.nextToken());
            m = Math.max(m, num);  //시험 점수 최댓값 구하기
            sum += num;  //시험 점수 합에 더해주기
        }
        sum /= (double)m;  //시험 점수 최댓값으로 나눠주기
        sum *= 100.0;
        sum /= (double)n;  //평균 구하기
        System.out.print(sum);
    }
}

 

 

반응형

댓글