728x90
문제
대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다.
당신은 그들에게 슬픈 진실을 알려줘야 한다.
입력
첫째 줄에는 테스트 케이스의 개수 C가 주어진다.
둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고,
이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.
각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다.
#백준 4344
count = int(input())
total = [0]*count #출력 결과 저장 리스트
grade = [] #입력 값 저장 리스트
#2차원 리스트, 입력 값들을 모두 저장
for co in range(count):
grade.append(list(map(int, input().split())))
for co in range(count):
average = sum(grade[co][1:]) / grade[co][0] #평균
num = 0 #평균 이상의 점수의 개수
for i in range(1, len(grade[co])):
if grade[co][i] > average: #성적이 평균 이상이면
num += 1
#출력 값 저장
total[co] = (num / (grade[co][0])) * 100
for co in range(count):
print("%.3f%%" %round(total[co],3))
첫 번째 for문은 입력한 모든 케이스의 값들을 리스트로 저장할 수 있게 합니다.
각 줄마다 입력되는 값들은 하나의 리스트로 저장되어 2차원 배열의 구조를 갖습니다.
-> grade = [ [5, 50, 50, 70, 80, 100], [7, 100, 95, 90, 80, 70, 60, 50], ... ]
두 번째 for문은 평균을 넘는 학생들의 비율을 계산하여 저장합니다.
average는 입력된 점수들의 평균을 저장합니다.
2차원 배열의 접근을 통해 각각의 케이스에 대한 값을 구할 수 있습니다.
num은 평균보다 높은 점수의 개수를 저장합니다.
평균을 넘는 학생의 비율을 계산할 때 활용됩니다.
소수점 셋째 자리까지 반올림하여 출력하라고 했기 때문에 %.3f 형식을 적용하였습니다.
반올림하여 값을 구하는 함수로 round()를 사용하였습니다.
round(x, 3)은 x값을 소수점 셋째 자리까지 반올림한다는 것입니다.
-끝-
728x90
'작업 > Problem Solving' 카테고리의 다른 글
백준 1065(한수) 파이썬(python) 해결 (0) | 2020.07.26 |
---|---|
백준 4673(셀프 넘버) 파이썬(python) 해결 (2) | 2020.07.26 |
백준 2577(숫자의 개수) 파이썬(python) 해결 (0) | 2020.07.23 |
백준 2523, 2446, 10996(별 찍기 13, 9, 21) 파이썬(python) 해결 (0) | 2020.07.22 |
백준 10817(세 수) 파이썬(python) 해결 (0) | 2020.07.22 |