코딩테스트

[백준/JAVA] 4344 평균 구하기

코드사냥꾼 2021. 5. 1. 18:17

문제

 

풀이

입력받은 테스트케이스 수 만큼 반복문을 돌리면서 배열에 성적을 저장하고, 동시에 누적 합을 같이 구해준다. 이후에 평균 성적을 구하고 배열에 저장된 성적들과 비교한 뒤 몇 명의 학생이 평균보다 높은지 카운트하면 된다.

참고로 printf에서 "%"라는 문자를 출력하려면 %%로 적어줘야한다.

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        // 테스트케이스 수
        int num = Integer.parseInt(br.readLine());
        
        int[] arr;
        
        StringTokenizer st;
        
        // 학생 수 만큼의 길이를 갖는 배열 생성
        for(int i=0; i<num; i++) {
            // 학생 수와 성적을 공백으로 구분 받아서 입력받기
            st = new StringTokenizer(br.readLine(), " ");
            
            // 학생 수 설정
            int student = Integer.parseInt(st.nextToken());
            arr = new int[student];
            
            // 성적 누적 합 
            double sum = 0;
            
            // 성적 입력
            for(int j=0; j<student; j++) {
                int grade = Integer.parseInt(st.nextToken());
                arr[j] = grade;
                // 누적해서 더하기
                sum += grade;
            }
            
            // 평균 구하기
            double avg = (sum/student);
            // 평균 넘는 학생 카운트
            double cnt = 0;
            
            for(int j=0; j<student; j++) {
                // 평균보다 높은 점수를 가진 학생이 있다면
                if(arr[j] > avg) {
                    // 카운트 증가
                    cnt++;
                }
            }
            System.out.printf("%.3f%%\n",(cnt/student)*100);
        }
    }
}

 

 

www.acmicpc.net/problem/4344

 

4344번: 평균은 넘겠지

대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.

www.acmicpc.net