문제
대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.
입력
첫째 줄에는 테스트케이스 C가 주어진다.
둘째 줄부터 각 테스트케이스 마다 첫 수로 정수 N(1 <= N <= 1000)명의 학생이 주어지고 그 다음으로 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%
케이스 입력받는다. 학생과 점수를 리스트로 입력받는다. 헷갈려서 학생은 students 변수에 리스트의 첫번째 원소값을 넣고, 학생 수를 버렸다.
성적들로 평균을 구하고 평균 이상인 점수가 나오면 count에 1 더한다.
비율을 계산한 뒤 소수점 넷째자리에서 반올림하여 소수점 이하가 세자리가 되게 한다.
소스코드
C = int(input())
avg=count=rate = 0
while C>0:
list1 = list(map(int, input().split()))#리스트로 입력받기
students = list1[0] #리스트의 첫번째 인덱스 값은 학생 수
list1.pop(0) #학생 수 버린 리스트
grade = list1 #성적만 뽑아냄
avg = sum(grade) / students #성적 다 더해서 학생 수로 나눈 게 평균
for i in grade:
if i > avg:
count += 1
rate = count/students*100
print("%.3f%%" % round(rate ,3))
C -= 1
avg=count=0
grade.clear()
print("%.3f%%" % round(rate ,3))
이 부분은 소수점 넷째 자리에서 반올림하여 소수점 이하 세자리를 나타내준다. 이걸 몰라서 자꾸 틀렸다.
'알고리즘 문제' 카테고리의 다른 글
백준 알고리즘 한수 1065번 (0) | 2017.11.02 |
---|---|
백준 알고리즘 셀프넘버 4673번 (0) | 2017.11.02 |
백준 알고리즘 평균 1546번 (0) | 2017.11.02 |
백준 알고리즘 열 개씩 끊어 출력하기 11721번 (0) | 2017.11.02 |
백준 알고리즘 숫자의 합 11720번 (0) | 2017.11.02 |