본문 바로가기

알고리즘

[백준] 1546번: 평균 (java, python)

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

 

1546번: 평균

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

www.acmicpc.net


💡 주의 사항

평범한 평균을 구하는 것이 아니라, 입력받은 수의 최대값을 구한 후, 모든 점수를 (점수 / 최대값) * 100으로 변환해야 함


🗒 풀이

java

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        int[] scores = new int[num];

        int max = -1;
        for (int i = 0; i < scores.length; i++) {
            int score = sc.nextInt();
            scores[i] = score;
            if (score > max) {
                max = score;
            }
        }

        double sum = 0;
        for (int i = 0; i < scores.length; i++) {
            int score = scores[i];
            sum += (((float) score / max) * 100);

        }
        System.out.println(sum / num);
    }
}
  • 첫 번째 입력받은 값은 앞으로 입력 받을 성적의 크기, 즉 배열의 크기다. 이 값을 사용하여 배열 scores의 크기를 지정한다.
  • max값을 구하고, 각 성적의 값들을 배열에 입력하기 위해 for문을 돌린다
  • sum 변수에 각 변환된 성적을 입력하고, 평균(sum / num)값을 출력

python

num = int(input())
scores = list(map(int, input().split()))
m = max(scores)

total = 0
for i in scores:
    total += (i / m) * 100

print(total / num)
  • 입력받은 값들을 split()한 후 int형으로 변환한 것을 list 형태로 저장
  • 리스트 scores에서 최대값을 max () 함수를 사용해 구한다
  • total 변수에 각 리스트의 변환된 값을 누적시켜준다
  • 평균(total / num)을 출력해준다