이 문제에서 배운 것은 round() 함수가 소수점이 0일 경우에는 자릿수만큼 출력을 안해주고, 그냥 생략해버린다는 것이다. 그래서 특정 소수점 자리수만큼 출력하고 싶다면 {:.3f} 이런 식으로 .format() 함수의 변수 위치에 자릿수를 표기해주는 것이 좋다.
그러면 소수점 뒷 자리가 모두 0이더라도 적어둔 숫자만큼 자릿수를 표기한다.
# 4344 평균은 넘겠지
C = int(input())
for tc in range(1, C+1):
# 우선 들어오는 숫자들을 리스트로 저장.
arr = list(map(int, input().split()))
# 두 번째 인덱스부터 끝까지 더한 수를 사람수(arr[0])으로 나눠준다.
avg = sum(arr[1:]) / arr[0]
# arr 안에 있는 수 중 평균보다 높은 수를 세서 사람 수로 나눈 후 * 100을 해준다.
# 소수점 셋째 자리까지 나타내야 하므로, .format의 변수가 들어갈 자리에 :.3f 이렇게 표기해준다.
# round(수, 3) 이렇게 하면 40.000% 처럼 끝이 0인 애는 자동으로 없애서 40.0%으로만 나온다.
cnt = 0
for i in range(1, len(arr)):
if arr[i] > avg:
cnt += 1
print('{:.3f}%'.format((cnt / arr[0]) * 100))
'개발 공부 > 알고리즘 문제풀이' 카테고리의 다른 글
[백준] 4673. 셀프 넘버 (0) | 2022.07.18 |
---|---|
[백준] 15596. 정수 n개의 합 (0) | 2022.07.18 |
[백준] 8958. OX퀴즈 (0) | 2022.07.17 |
[백준] 1546. 평균 (0) | 2022.07.17 |
[백준] 3052. 나머지 (0) | 2022.07.17 |