본문 바로가기
Algorithm

[구현/수학] 백준 4344 평균은 넘겠지 - Python, Java

by jangThang 2022. 1. 26.
반응형

백준 온라인 저지

 

[ Contents ]

     

     

    1. 문제 (링크 참조)

     

    4344번: 평균은 넘겠지

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

    www.acmicpc.net

     

     

     

    2. 문제 풀이

     평균을 넘는 점수 비율을 출력하는 문제입니다.

     

    2022.01.19 - [Algorithm] - [Algorithm] 단골 1번 문제, 구현 / 수학

     

    [Algorithm] 단골 1번 문제, 구현 / 수학

    1. 구현  단순히 '구현'만 하면 되는 문제 유형입니다. 문제를 이해하고 입력에 맞춰 적절한 출력만 하면 됩니다. 특별한 알고리즘이나 프로그래밍적 기법 없이, 단순 제어문만 사용하여 해결할

    star7sss.tistory.com

     간단한 수학문제입니다. 다만 입력/출력 형식이 조금 까다롭습니다. 한 줄로 학생의 수와 점수를 입력받으므로, 나누는 처리가 필요합니다. 또, 출력도 소수점 셋째 자리까지 반올림하고, % 형식도 지켜줘야 합니다.

     

     

     

    3. 코드

    C = int(input())
    for i in range(C):
        score = list(map(int, input().split()))
        N = score.pop(0)
        mean = sum(score)/N
        
        cnt = 0 # 평균 넘는 인원
        for j in score:
            if j > mean:
                cnt += 1
        res = (cnt/N) * 100
        print(f'{res:.3f}%')

     한 줄 전체를 리스트로 입력받은 다음, 맨 앞 요소만 pop으로 빼냅니다. 출력은 f-string 문법을 사용합니다.

     

     

    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 = sc.nextInt();
    			int[] arr = new int[n];
    			double sum = 0.0;
    
    			for(int j = 0; j < n; j++) {
    				arr[j] = sc.nextInt();
    				sum += arr[j];
    			}
    			double average = sum/(double)n;
    			int high = 0;
    			for(int j = 0; j < n; j++) {
    				if(arr[j] > average)
    					high++;
    			}
    			double average2 = ((double)high/(double)n) * 100.0;
    			System.out.println(String.format("%.3f", average2) + "%");
    		}
    	}
    }

     

     

     

    반응형

    댓글