본문 바로가기
작업/Problem Solving

백준 4344(평균은 넘겠지) 파이썬(python) 해결

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