코딩 테스트/백준

[백준] 4344번: 평균은 넘겠지 (JAVA, 자바)

Nirsa 2022. 3. 23. 22:43
반응형
4344번: 평균은 넘겠지 (JAVA, 자바)

대략적인 설명은 코드 블럭 안에 넣어 두었습니다. 해당 문제에서 조심해야할 것은 "평균을 넘는 학생들의 비율"에서 "넘는" 것이기 때문에 이상이 아닌, 초과로 계산하여야 합니다.

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int C = sc.nextInt();  // 테스트 케이스 수 입력받기
		
		for(int i=0; i<C; i++) {    
			int[] N = new int[sc.nextInt()]; // 학생 수 입력받기
			int sum = 0; // 학생들의 총 점수
			int avg = 0; // 학생들의 평균 점수 
			int standard_cnt = 0;  // 평균 이상의 학생 수 
			float standard_avg = 0;  // 평균 점수보다 높은 학생 수 비율(%) 
			
            // 입력받은 학생 수 만큼을 반복하여 N 배열의 인덱스에 각각 저장 합니다.
			for(int j=0; j<N.length; j++) {
				N[j] = sc.nextInt();  // 입력받은 값을 N 배열에 저장
				sum += N[j]; // 학생들의 총 점수를 sum 변수에 저장
			}
			
			avg = sum/(N.length); // 총점수/학생수를 계산하여 평균 점수를 avg 변수에 저장
            
			for(int k=0; k<N.length; k++) {
				if(N[k] > avg) {
					standard_cnt++;  // 평균 점수보다 높은(초과) 학생 수를 standard_cnt 변수에 저장
				}
			}
            
            /*
            소수점 셋째 자리까지 출력 해야하므로 학생 수(standard_cnt)를 float으로 형변환 해준 뒤
            폄균 점수보다 높은 학생 수/총 학생 수를 계산하고 100을 곱해주면 
            평균을 넘는 학생들의 비율을 알아낼 수 있습니다.
            
            이후 마지막으로 String.format을 사용하여 소수점 3자리까지 표시합니다.
            */
            
			standard_avg = (float)standard_cnt/N.length * 100;  
			System.out.println(String.format("%.3f", standard_avg)+"%");
		}
		
		
	}
}
반응형