Python

[Python] 백준 4344(평균은 넘겠지)

땅콩새싹 2021. 7. 29. 14:51
반응형

백준 4344(평균은 넘겠지)

 


 

https://www.acmicpc.net/problem/4344

 

4344번: 평균은 넘겠지

대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.

www.acmicpc.net

 

코드설명

1
2
3
4
5
6
7
8
9
10
11
12
13
import numpy as np
 
= int(input())
 
for _ in range(n):
    nums = list(map(int, input().split()))
    avg = np.mean(nums[1:])
    cnt = 0
    for score in nums[1:]:
        if score > avg:
            cnt += 1
    rate = cnt/nums[0]*100
    print(round(rate,3),'%')
cs

numpy 라이브러리의 평균을 구하는 함수인 mean()을 사용하기 위해 numpy를 import 해 주었습니다. 첫째 줄의 테스트 케이스 개수를 입력받는 변수 n을 선언했습니다. input()으로 개수를 입력받아 n에 저장하고 반복문을 사용해 n에 저장된 숫자만큼 반복합니다. 예제 입력을 보면 띄어쓰기로 한줄에 입력을 받기 때문에 map()을 사용해 입력받은 숫자들을 list에 차례대로 저장합니다. 그리고 numpy의 mean()을 사용해 list에 저장되어 있는 숫자들 중에 2번 째 부터 평균을 구해 줍니다. 1번째 숫자는 사람의 수를 나타내는 숫자이기 때문에 빼고 계산했습니다. 그리고 반복문을 다시 사용해 nums에 저장된 점수를 한개 씩 불러오면서 위에서 구한 평균과 비교하며 평균보다 높으면 cnt를 1씩 증가시켜 평균보다 높은 점수를 가진 사람 수를 세줍니다. 그리고 cnt의 수와 nums[0]에 저장된 사람 수로 평균보다 높은 사람의 비율을 계산해주고 round()함수를 통해 소수점 셋째 자리까지 반올림해 출력합니다.

 

실행결과

반응형

'Python' 카테고리의 다른 글

[Python] 백준 1157(단어 공부)  (0) 2021.08.02
[Python] 백준 8958(OX퀴즈)  (0) 2021.07.29
[Python] 백준 1110(더하기 사이클)  (0) 2021.07.25
[Python] 백준 5543(상근날드)  (0) 2021.07.25
[Python] 백준 2884(알람 시계)  (0) 2021.07.22