[백준,BOJ 4344] 평균은 넘겠지(JAVA 구현)
코테/백준 온라인 저지(BOJ)

[백준,BOJ 4344] 평균은 넘겠지(JAVA 구현)

반응형

-해법

import java.util.Scanner;

public class Main{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
                
        int t = in.nextInt(); // 테스트 케이스 수
        int arr[], student, sum, avg, cnt; // 점수 저장 배열, 학생 수, 총점, 평균, 평균 이상의 학생 수 변수
        
        for(int i=0;i<t;i++){ // 테스트 케이스 수 반복
            student = in.nextInt(); // 학생 수 입력
            arr = new int[student]; // 학생 수 만큼 배열 생성
            // 연산에 사용될 변수들 초기화
            sum=0;
            avg=0;
            cnt=0;
            //
            for(int j=0;j<arr.length;j++) { // 학생들 점수 입력 반복
            	arr[j] = in.nextInt();
            	sum+=arr[j]; // 총점 계산
            }
            
            avg = sum / student; // 평균 계산
            
            for(int j=0;j<arr.length;j++) { // 평균점수 이상의 학생 수를 찾는 반복
            	if(arr[j]>avg) {
            		cnt++; // 평균점수 이상의 학생 수 증가
            	}
            }         
            // 평균점수 이상의 학생 비율 및 출력 포맷
            System.out.println(String.format("%.3f",(double)cnt/student * 100)+"%");
        }
        
        in.close();
    }
}

  개인적으로 이 문제에서 원하는 출력 결과는 뽑아냈지만, 마지막에 출력 과정에서 소수점 출력 포맷에 익숙하지 않아 검색을 좀 해보았다. printf()를 사용한다거나 DecimalFormat, Math.round() 등 다양한 방법이 있는데 개인적으로는 String.format()을 사용해서 출력하는 것이 편하다고 생각한다. 주의해야 할 점은 모든 계산의 과정이 정수 형태로 이루어졌기 때문에 비율을 출력 시 (double)로 캐스팅해주어야 소수점까지 제대로 표현이 된다!

반응형