my study.

Coding Test/Baekjoon

[백준] 1546 평균, java

fftl 2020. 12. 21. 19:56

www.acmicpc.net/problem/1546

 

1546번: 평균

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

www.acmicpc.net

import java.util.*;

public class Main{                      
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);            //scanner 객체를 생성
        
        String countStr = sc.nextLine();                //첫번째 입력으로 점수의 개수 입력
        int count = Integer.parseInt(countStr);         //위의 counterStr을 문자로 받았기 때문에 int로 변환
        
        String numbers = sc.nextLine();                 //다음 라인의 점수들을 입력받음
        String[] numbersS = numbers.split(" ");         //받은 점수 문자열을 공백을 기준으로 잘라서 numbersS배열에 입력
        
        double[] numbersD = new double[count];          //점수 개수만큼의 double 배열 선언
        
        for(int i=0; i<count; i++){                     //현재 문자열 숫자인 numbersS 배열을 double 로 변환하여 입력
            numbersD[i] = Double.parseDouble(numbersS[i]);
        }
        
        Arrays.sort(numbersD);                          //최고값을 찾기위해 정렬을 해줌(오름차순)
        
        double maxNum = numbersD[count-1];              //가장 마지막의 숫자가 최고값 그러므로 최고값을 maxNum에 담아줌
        double sum = 0;                                 //평균을 구하기 위한 점수의 총합을 담을 double 선언
        
        for(double num : numbersD){                     //numberD만큼의 반복을 함
            sum = sum + num/maxNum*100;                 //문제에서 주어진 조작된 평균을 구하기위한 점수/최대점수*100 의 총합을 구함
        }
        
        double answer = sum/count;                      //조작된 평균을 구하기위한 합을 점수개수로 나눠줌
        System.out.println(String.format("%.6f", answer));  //예제처럼 여섯번째 자리까지 반올림하기 위한 String.format 사용
        
        sc.close();
        }
}

'Coding Test > Baekjoon' 카테고리의 다른 글

[백준] 1920 수 찾기, java  (0) 2022.07.11
[백준] 3052 나머지, java  (0) 2020.12.21
[백준] 10817 세 수, java  (0) 2020.12.21
[백준] 1110 더하기 사이클, java  (0) 2020.12.21
[백준] 4344 평균은 넘겠지, java  (0) 2020.12.21