티스토리 뷰

728x90
반응형

문제

 

대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 

당신은 그들에게 슬픈 진실을 알려줘야 한다.

 

입력

 

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

둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 

점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.

 

출력

 

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

 

풀이

 

파이썬에선 리스트를 자르는 행위를 슬라이스라고 부르는 것 같다.

 

방식도 써먹을 곳도 굉장히 다양하지만 그건 차차 정리하도록 하고..

 

나는 이번에 한 줄로 들어오는 숫자에서 학생의 숫자와 그 점수를 분리하는 데 사용했다.

 

슬라이싱 역시 상당히 간결한데, 자르고 싶은 리스트 이름을 가지고 list[0:2] 하고 입력하는 식이다.

 

이렇게 하면 마지막 인덱스(2)를 제외한 리스트가 잘려나오게 된다.

 

만약 리스트의 끝까지 자르고 싶다면 시작점만 입력한다(list[1:]).

 

또한 소수점 자릿수를 다루는 법도 배웠는데, 몇 가지 방법이 있었지만 제일 간단해 보이는 것으로 사용했다.

 

자세한 것은 코드에서!

import sys

c = int(sys.stdin.readline())

result = []

for i in range(c):
    total = list(map(int, sys.stdin.readline().split()))
    number = total[0]
    score = total[1:]
    average = sum(score) / number
    count = 0
    for j in score:
        if j > average:
            count += 1
    result.append(count * 100 / number)

result = [f'{i:.3f}%' for i in result]

print(*result, sep='\n')
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/06   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
글 보관함