반응형
문제
대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.
입력
첫째 줄에는 테스트 케이스의 개수 C가 주어진다.
둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.
출력
각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다.
알아야 할 정보:
1. round 함수
: round(실수, 반올림하는 자릿수) 로 소수점 관리 가능
a = round(1.23456,0) # 1 출력
b = round(1.23456,1) # 1.0 출력
c = round(1.23456,2) # 1.2 출력
d = round(1.23456,3) # 1.23 출력
2. format 서식지정
:print("{:.nf}".format(number)) 로 number의 소수점 n+1번째 자릿수에서 반올림해서 소수점 n번째 자릿수까지 출력.
print("{:.2f}".format(1.23456)) # 소수점 3번째에서 반올림해서 2번째 자릿수까지만 출력하겠다.
3. '%.?f'로 서식지정
print('%.nf' %number) 로 number의 소수점 n+1번째 자릿수에서 반올림해서 소수점 n번째 자릿수까지 출력함으로써 소수점을 관리할 수 있다
print('%.2f' %0.256) # 소수점 3번째에서 반올림해서 2번째 자릿수까지만 출력하겠다.
내 풀이
n = int(input())
for _ in range(n):
total_list =list(map(int, input().split()))
del total_list[0]
avg = sum(total_list) / len(total_list) #평균점수 구하기
count = 0
#평균 이상 사람수 구하기
for i in total_list:
if i > avg:
count+=1
#비율 구하기
print("{:.3f}%".format(count/ len(total_list)*100))
다른풀이:
n = int(input())
for _ in range(n):
nums = list(map(int, input().split()))
avg = sum(nums[1:])/nums[0] # 평균을 구함 (nums[0]: 학생수, nums[1:] 점수)
cnt = 0
for score in nums[1:]:
if score > avg:
cnt += 1 # 평균 이상인 학생 수
rate = cnt/nums[0] *100
print(f'{rate:.3f}%')
'CodingTest > 백준' 카테고리의 다른 글
[백준/Python] 10809번 문제 알파벳 찾기 (0) | 2021.10.21 |
---|---|
[백준/python] 1065번 한수 (0) | 2021.10.20 |
[백준/python] 8958번 문제 OX퀴즈 (0) | 2021.10.19 |
[백준/python] 3052번 문제 나머지 (0) | 2021.10.19 |
[백준/python] 2577번 숫자의 개수 (0) | 2021.10.18 |