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보다 작거나 같은 정수이다.
각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다.
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
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}' 이런식으로 소수점을 해결한다는 것도 배웠다
아직 모르는게 많아서 한 문제에 한개 이상 배울게 생긴다 더 열심히 해야징!
백준 1065번 <한수> [파이썬] (0) | 2022.07.14 |
---|---|
백준 4673번 <셀프 넘버> [파이썬] (0) | 2022.07.14 |
백준 8958번 <OX퀴즈> [파이썬] (0) | 2022.07.13 |
백준 3052번 <나머지> [파이썬] (0) | 2022.07.12 |
백준 2739번 <구구단> [파이썬] (0) | 2022.07.11 |