상세 컨텐츠

본문 제목

백준 4344번 <평균은 넘겠지> [파이썬]

백준

by 덴마크 당나귀 2022. 7. 13. 17:09

본문

728x90

https://www.acmicpc.net/problem/4344

 

4344번: 평균은 넘겠지

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

www.acmicpc.net

 

평균은 넘겠지 

한국어   
시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 256 MB 207031 74526 61717 35.955%

문제

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

입력

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

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

출력

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

예제 입력 1 복사

5
5 50 50 70 80 100
7 100 95 90 80 70 60 50
3 70 90 80
3 70 90 81
9 100 99 98 97 96 95 94 93 91

예제 출력 1 복사

40.000%
57.143%
33.333%
66.667%
55.556%

 

일단 이 문제를 보고 35% 밖에 정답률이 안나온 것에 대해서 조금 놀랐다!

문제 자체는 어렵지 않은데 내 생각엔 이걸 한번에 출력을 나오게 하려고 하다보니 어렵다고 생각한 것 같다

이건 하나의 리스트를 계속해서 사용해서 하는것! 

그래서 입력과 동시에 바로바로 출력이 나와서 예를 들어 3번을 list를 입력해야 된다면, 입력 -> 출력 -> 입력 -> 출력 ... 이런식으로

나가는 것으로 생각하면 그리 어렵지 않다!

import math

x = int(input())
global cnt
for i in range(x):
    cnt = 0
    list_class = list(map(int,input().split()))
    total = sum(list_class) - list_class[0]
    avg = total / list_class[0]
    for j in range(1,list_class[0] + 1):
        if list_class[j] > avg:
            cnt = cnt + 1
    answer = cnt / list_class[0]*100
    answer = round(answer,3)
    print(f'{answer:.3f}%')

 

 

짜잔! 

생각보다 간단하게 나왔당

 

list_class로 list안에 멤버들 입력해주고 

총합, 평균 계산 후! 

그 값으로 list 쭉 돌고 크면 cnt값 하나씩 성장시켜버리고

그 값을 총 학생수로 나눠준 후 백분위로 바꿔준다음!

 

소숫점 3째 자리에서 반올림 후 .3f로 해결!

 

개인적으로 맨 처음 출력이 40.000%이다 보니 헷갈렸는데

파이썬 에서는 f'{answer:.3f}' 이런식으로 소수점을 해결한다는 것도 배웠다

 

아직 모르는게 많아서 한 문제에 한개 이상 배울게 생긴다 더 열심히 해야징!

 

 

728x90

관련글 더보기