본문 바로가기
IT/알고리즘

[BAEKJOON] 백준 4344번: 평균은 넘겠지 (Python)

by 무녈 2021. 8. 13.

문제 링크: https://www.acmicpc.net/problem/4344

 

4344번: 평균은 넘겠지

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

www.acmicpc.net


문제

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

입력

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

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

출력

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


코드

num = int(input())

for i in range(num):
    scores = list(map(int, input().split()))
    avg = sum(scores[1:])/scores[0]    
    cnt = 0
    for j in scores[1:]:
        if j > avg:
            cnt += 1
    rate = cnt/scores[0]*100
    print("{:.3f}%".format(rate))

코드 설명

  1. 사용된 변수
    num: 테스트 케이스 개수 / scores: [0]: N명의 학생 수 [1:] N명의 점수를 가진 배열 / avg = N명의 평균
    cnt = 평균 이상의 점수를 가진 학생의 수 /  rate = 평균 점수 이상의 학생들/전체 학생 *100
  2. 첫 번째 for문을 통해 테스트 케이스 개수만큼의 배열을 생성
  3. 이중 for문을 통해 평균 점수 이상의 점수를 구함
  4. 출력시 소수점 셋째 자리까지 출력해야 하므로 format을 이용하여 소수점 3째자리까지 출력한다
    * 최초 문제 풀이시 round함수를 이용하였으나, round 함수의 경우 40.000의 경우 40.000이 아니라 40.0 까지 밖에 표현하지 못하는 문제로 인해 문제에서 요구하는 소수점 셋짜까지 출력을하지 못한다. 그러므로 format을 이용하여 소수점 셋짜자리까지 표시하도록 한다.
반응형

댓글