https://www.acmicpc.net/problem/4344
4344번: 평균은 넘겠지
대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.
www.acmicpc.net
# 4344 평균은 넘겠지
n = int(input())
for _ in range(n):
nums = list(map(int, input().split()))
avg = sum(nums[1:])/nums[0]
count = 0
for score in nums[1:]:
if score > avg:
count += 1
rate = count/nums[0] * 100
print(f'{rate:.3f}%')
처음에 입력받은 수만큼 for문을 반복한다. 첫 번째 for문 안에서는 학생 수 와 학생 각각의 점수를 입력받아 list로 변수 nums에 저장한다. 학생 수는 nums[0]이고 점수들은 nums[1:]로 표현할 수 있다. 이걸 이용해서 학생들의 평균점수를 구할 수 있다. sum() 함수를 이용해서 점수들의 합을 구하고 nums[0] ( 학생 수 )로 나누면 평균값이 나온다.
두 번째 for문에서는 평균값을 넘는 학생의 비율을 구할 수 있다. 학생들의 점수들인 nums[1:] 중에서 하나씩 꺼내어 변수 score에 저장한다. score값이 평균값보다 크면 0으로 지정해 둔 count 값에 1을 더한다.
두 번째 반복문이 끝나고 평균이 넘는 학생들의 비율은 이전에 구했던 count 값을 nums[0]으로 나누고 100으로 곱해 구할 수 있다. 비율은 소수점 셋째 자리까지 출력해야 하기에 출력할 때 f-string을 표기법을 이용해서 소수점 자릿수를 지정해 준다.
'Coding Test' 카테고리의 다른 글
Python 백준 알고리즘 : 1065 한수 (0) | 2023.02.01 |
---|---|
Python 백준 알고리즘 4673 : 셀프 넘버 (0) | 2023.02.01 |
Python 백준 알고리즘 15596 : 정수 n개의 합 (0) | 2023.02.01 |
Python 백준 알고리즘 8959 : OX퀴즈 (0) | 2023.02.01 |
Python 백준 알고리즘 3052 : 나머지 (0) | 2023.02.01 |