[백준] 4344번 평균은 넘겠지 파이썬 python
본문 바로가기
Python/Python 코딩테스트

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

by 쏠수있어ㅤ 2022. 1. 26.
반응형

평균은 넘겠지 

한국어   
시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 256 MB 167471 60716 50827 36.425%

문제

대학생 새내기들의 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%

출처

Contest > Waterloo's local Programming Contests > 28 September, 2002 D번

알고리즘 분류

 

 

 

정답 코드 : 

import sys

n = int(input())

for _ in range(n):
    c, *l = map(int, sys.stdin.readline().split())
    average = sum(l)/c
    overAverageStudents = 0
    for i in l:
        if i > average:
            overAverageStudents += 1
        else:
            continue
    print(format(overAverageStudents/c*100, ".3f")+'%')

 

 

 

풀이 : 

평균보다 더 높은* 점수를 가진 학생들의 비율을 구하는 문제이다. (같은 경우 X 미포함)

 

c, *l = 입력값을 받으면 c는 맨 처음 받은 입력값을, 그리고 나머지가 list로 자동 저장된다. 

average  = 해당 학생들의 성적 평균을 나타내고 

overAverageStudents = 0을 선언해준다. 

for 문으로 l 리스트의 학생 점수들을 하나씩 average와 비교하여 더 큰 경우에 overAverageStudents 수를 1씩 증가시킨다.

 

for문을 나가기 전 print()로 평균보다 높은 점수를 받은 학생을 전체 학생 (c)로 나누어 100을 곱한 후 format(x, ".3f")으로 소수점 3자리까지 나오도록 포맷화 한다. 

 

반응형

댓글