Algorithm/기타

[백준 1546번] 평균

agility 2019. 12. 7. 15:23

백준알고리즘 1546번 : 평균

 

출력에대한 설명에서 알 수 있듯, 정확히 일치하는 값을 요구하는 문제가 아니다.

10의 -2승까지의 오차를 허용한다고 서술되어있으니, 0의 갯수라던지, 소수점 0.6666이든 0.666666이든

정답으로 취급하는 것이다.

따라서 많이 어렵지 않은 문제가 되었다.

 

또한, 새로운 평균을 구하는 방식이 꽤나 복잡해보이지만, 생각해보면 간단하다.

결국 새로운 평균을 구하는 공식은 다음과 같다.

(각 점수들의 합 sum X 100) / ( 최대 점수 max X 시험본 과목의 갯수 count)

 

 

 

 

 

풀이 과정



1. 최대 점수를 구하기 위해서, 배열에 과목의 점수를 넣는 동시에 최대 값(max)을 차출한다.
2. 이와 동시에 각 값들의 합(sumAll)을 구해준다.
3. (sumAll * 100) / (max * count) 를 출력한다.

 

 

 

<< 백준알고리즘 1546번 반례 >>

 오차 값을 허용한다고 하더라도, 정수로 나오게끔하는 실수는 없어야한다.
 오차가 소수 둘째 자리수까지만 허용되기 때문이다.
 따라서 정수 100을 실수 타입으로 작성해준다.

 

 

 

 

소스 ▽

더보기
import java.util.Scanner;

public class Main {// 1546번 : 평균
	
	public static void main(String[] args)  {

		
		Scanner sc = new Scanner(System.in);
		int count = Integer.parseInt(sc.nextLine());
		
		int max = -1;
		int arr [] = new int [count];
		int sumAll = 0;
		for (int i = 0; i < count; i++) {
			arr[i]=sc.nextInt();
			sumAll+=arr[i];
			if (arr[i]>max) {
				max = arr[i];
			}
			
		}
		
		System.out.println((sumAll*100.0)/(max*count));
	
	}
}