본문 바로가기

Coding Test/백준

백준 4344. 평균은 넘겠지

 

공유 소스 보기

 

www.acmicpc.net

 

문제

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

 

입력

첫째 줄에는 테스트 케이스의 개수 C가 주어진다.

둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.

 

출력

각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다.

 


 

내가 작성한 코드

import java.util.Scanner;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
 
        //대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각하는데
        //그들에게 슬픈 진실을 이야기해주어야하는데 굳이..?
        
        //개수 c 주어짐
        int c = sc.nextInt();
        
        //각 케이스마다 학생의 수인 n과 
        int n, sum, count;
        //그 다음 n의 점수 주어짐
        
        int[] arr = new int[1001];
        
        //각 케이스마다 한 줄 씩 평균이 넘는 학생의 비율 반올림하여 소숫점 셋째 자리 출력
        
        for(int i = 0; i < c; i++){ //테스트 케이스 개수
            n = sc.nextInt(); //학생 수
            
            //초기화
            sum = 0;
            count = 0;
            
            for(int j = 1; j <= n; j++){ //학생 수만큼
                arr[j] = sc.nextInt(); //점수 입력해서 배열 저장

                sum += arr[j]; //sum 배열값 더함
            }

            double avg = (double)sum / n; //평균값
            
            //평균값 넘는 사람들
            for(int j = 1; j <= n; j++){
                if(arr[j] > avg){
                    count += 1;
                }
            }
            
            System.out.printf("%.3f", 100.0 * count / n);
            System.out.println("%");
        }
        sc.close();
    }
}

 

비교

import java.util.Scanner;


// casting의 개념 복습 time
public class Main{
    static int v[] = new int [1001];
    
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int t = sc.nextInt();
        
        while(t-- > 0){
            int all = sc.nextInt();
            
            int n = all, sum = 0;
            while(n-- > 0){
                v[n] = sc.nextInt();
                sum += v[n];
            }//전체 학생의 총합을 구하고,
            
            double avg = (double) sum / all; //평균값을 구함
            int ans = 0;
            n = all;
            while (n-- > 0){
                if(v[n] > avg) ans++; //평균보다 높은 학생은 몇 명?
            }
            
            //평균보다 높은 학생은 %을 출력시킴
            System.out.format("%.3f%c\n", (double) ans * 100 / all, '%');
        }
    }
}

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

백준 2920. 음계  (0) 2021.03.11
백준 4153. 직각삼각형  (0) 2021.03.11
백준 4673. 셀프 넘버  (0) 2021.03.11
백준 5543. 상근날드  (0) 2021.03.11
백준 6064. 카잉 달력  (0) 2021.03.11