본문 바로가기
백준(Baekjoon)

[백준/자바] 1546번: 평균

by IT 정복가 2022. 5. 20.
728x90

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

 

1546번: 평균

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

www.acmicpc.net


[문제]


[코드]

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		double max = 0.0;
		int N = sc.nextInt();
		double arr[] = new double[N];  //과목의 수
		double average = 0;
		
		for(int i = 0 ; i < N; i++) {
			arr[i] = sc.nextDouble(); // i번째 과목의 점수
			if(arr[i] > max) {
				max = arr[i];	
			}	
		}

		for(int i = 0; i < N; i++) {
			arr[i] = arr[i]/max*100; //i번째 과목의 바뀐 점수
			average = average + arr[i];
		}
		
		System.out.println(average/N);
		sc.close();
	}
}

[설명]

1. 이 문제를 요약하자면 총 시험을 본 과목 중 최대값을 구한 후 각 점수/최대값*100을 해서 과목의 수만큼 나눠 평균을 구하는 문제이다.

2. 최대값을 구하려면 우선 max를 0으로 초기화 해 둔 상태로 각 과목의 점수를 입력받아 0번째부터 N번째까지 비교해가면서 구할 수 있다.

3. 과목들을 배열에 넣고 0번방 부터 max보다 크다면 max에 그 과목의 점수를 넣어주기를 반복하면 최대값을 쉽게 구할 수 있다.

4. 최대값을 구했기 때문에 각 과목들/최대값*100을 계산할 수 있게 되었다. 이때 만약, arr[]가 int형으로 주어진다면 결과가 0으로 나오기때문에 double타입으로 설정해준다.

5. 평균을 구하기 위해 double타입의 average에 바뀐 과목들의 점수를 더한다.

6. 더한 점수를 N으로 나누면 결과가 출력된다.


[결과]

 

728x90