Java/코딩테스트

평균 구하기

Gamii 2024. 6. 26. 07:23
728x90

[문제]

백준 온라인 저지 - 1546번

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

 

 

 

[풀이]

1. 일일이 변환 점수를 구할 필요 없이 한번에 변환한 점수의 평균 점수를 구하자.

(A/M*100 + B/M*100 + C/M*100) / 3 = (A + B + C)* 100 /M / 3

 

 

 

2. 오차범위를 고려하자.

(오차범위에 걸려서 여러번 재시도를 했었다..ㅠ)

 

"실제 정답과 출력값의 절대오차 또는 상대오차가 10-2 이하이면 정답이다. " 소숫점까지 구해야 통과가 된다. 

따라서,  100을 곱해주는 대신 100.0을 곱해서 소수로 계산하였다.

 

 

 

[통과 코드]

import java.util.*;

public class Main{
    public static void main(String[] args){
       Scanner sc = new Scanner(System.in);
       int catCnt = sc.nextInt();
       long sum = 0;
       long max = 0;
        
       for(int i = 0; i < catCnt; i++){
           int score = sc.nextInt();
           
           if(max < score){
                max = score;
            }
            
            sum += score;
       }
        
        System.out.println(sum * 100.0 / max / catCnt);
    }
}