문제:

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

입력:

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

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


출력:

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

풀이 방법:

입력값들을 받는 함수 student와 그 입력 값을 받아서 비율을 계산해주는 blue라는 함수 두 개로 구성되어 있다. 입력이 학생의 수 이후에 점수들이 나타나는 형식으로 이루어져 있으므로 input().split()을 통해 리스트로 받아준 후 정수값과 리스트값으로 나누었다.
이를 blue에 넣어서 평균을 구하고 평균을 넘는 학생들의 수를 구하였다. 출력을 소수점 셋째 자리까지 출력해야 하는데 이는 round함수를 구하면 얻을 수 있다. round( value, number)로 구성되어 있는데 value를 소수점 number째 자리까지 반올림하여 출력해주는 함수이다. 따라서 round(value,3)과 같이 구하면 얻을 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def blue(n,a):
    sumscore=0
    person=0
    for i in range(n):
        sumscore += int(a[i])
        average=sumscore/n
    for i in range(n):
        if int(a[i]) > average:
            person +=1
        else:
            pass
    print("%.3f%%" % round(person/n*100,3))
def student(c):
    for i in range(c):
        m=input().split()
        n=int(m[0])
        a=m[1:]
        blue(n,a)
c=input()
c=int(c)
student(c)
cs


'Algorithm > Python' 카테고리의 다른 글

[BOJ]1065. 한수  (0) 2019.04.03
[BOJ]1110. 더하기 사이클  (0) 2019.04.02
[BOJ]2839.설탕 배달  (1) 2019.03.31
[BOJ]11718.그대로 출력하기  (0) 2019.03.30
[Programmers]Lv 2. 라면공장  (0) 2019.03.29

+ Recent posts