728x90

 

파이썬

 

브1 평균은 넘겠지

 

 

더보기

문제

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

 

맞은 코드

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import sys
input = sys.stdin.readline
= int(input())
result = 0
for i in range(C):
    testCase = list(map(int, input().split()))
    num = []
    for j in range(1, testCase[0]+1):
        num.append(testCase[j])
    numAvg = sum(num)/testCase[0]
    cnt = 0
    for n in num:
        if n > numAvg:
            cnt += 1
    result = round(cnt / testCase[0]*1003)
    print("{:.3f}%".format(result))
cs

 

파이썬 내장 함수인 round()를 사용하면 반올림을 할 수 있다.

인자는 기본적으로 두 개를 받는다.

첫 번째 인자 수를 두 번째 인자 소수 자리까지 반올림한다.

 

round(5.7142, 2)

 

이렇게 하면 5.7142를 소수 둘째 자리까지 반올림하여 결과는 5.71이 된다.

 

인자를 하나만 넣게 되면 인자에 가장 가까운 정수를 반환한다.

 

또한 round()는 반올림할 자리 앞자리의 숫자가 짝수이면 내림, 홀수면 올림을 한다.

즉, 반올림할 자리 숫자가 5이면 반환값이 무조건 짝수인 것이다.

 

그러나 round()로는 원래 자릿수가 두 번째 인자 소수점 자릿수보다 작을 경우에는 자릿수를 맞출 수가 없다.

이 예제에선 40.000%이 round()로는 40.0%까지만 출력이 된다.

 

따라서 format()를 이용하여 소수점 자릿수를 지정해주었다.

"{:.3f}".format(실수)

이렇게 하면 무조건 소수 셋째 자리까지 출력할 수 있다.

 

728x90
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기