곽로그

[백준 1546] 평균 본문

알고리즘/백준

[백준 1546] 평균

일도이동 2019. 4. 17. 13:42
반응형

 

 

1546번: 평균

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

www.acmicpc.net

접근

우선 시험점수 중에서 최댓값을 알아야한다. 그러러면 배열을 선언하여 배열에 점수들을 입력받고, 배열을 순회하면서 최댓값을 찾으면 된다. 최댓값을 찾았으면 다시 배열을 순회하면서 변환된 점수를 입력한다. 그다음 변환된 점수로 평균을 구한다. 

 

주의점

예를들어 점수입력을 40 80 60이라고 하자. 그러면 최댓값이 80이므로 40의 변환된 점수는 (40/80)*100 즉 50이 되어야 한다. 근데 만약 점수입력을 int로 받고 변환된 점수의 합도 int로 받게 되면 (40/80)=0.5인데 자료형이 int이므로 0이 된다. 따라서 자료형을 double로 해야 에러가 안생긴다. 

 

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		int N=in.nextInt();
		
		//크기가 N인 배열에 점수를 입력받는다
		double[] numArray=new double[N];
		for(int i=0;i<N;i++) {
			numArray[i]=in.nextInt();
		}
		
		//점수들 중에서 최댓값을 찾는다.
		double max=0;
		for(int i=0;i<numArray.length;i++) {
			if(numArray[i]>=max) {
				max=numArray[i];
			}
		}
		
		//점수를 변환한다 (점수/M)*100, 그리고 이에 대한 합을 구한다
		double sum=0;
		for(int i=0;i<numArray.length;i++) {
			sum+=(numArray[i]/max)*100;
		}
		
		//평균을 구한다
		double average=sum/N;
		System.out.println(average);
	}
}
 	

 

반응형

'알고리즘 > 백준' 카테고리의 다른 글

[백준 1110] 더하기 사이클  (0) 2019.04.18
[백준 4344] 평균은 넘겠지  (0) 2019.04.17
[백준 10871] X보다 작은 수  (0) 2019.04.17
[백준 10817] 세 수  (0) 2019.04.16
[백준 11721] 열 개씩 끊어 출력하기  (0) 2019.04.16
Comments