4344번: 평균은 넘겠지
대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.
www.acmicpc.net
이전 풀이
https://dmaolon00.tistory.com/11
[백준_python] 소수점 조절, %%, 문자열, 언더스코어(_) ||1546, 4344
소수점 round(수, n) 반올림을 하여서 소수 n번째까지 출력되도록 하는 함수이다. %0.nf 소수 n번째까지 출력된다. (앞에 0생략 가능) 뒤에 식이 아니라 숫자가 와야 한다고 한다. % %s : 문자열(String) %c
dmaolon00.tistory.com

c = int(input())
for i in range(c):
score = list(map(int, input().split(' ')))
avg = ratio = 0
for j in range(1, score[0] + 1):
avg += score[j]
avg = avg / score[0]
for j in range(1, score[0] + 1):
if score[j] > avg:
ratio += 1
ratio = round((ratio / score[0]) * 100, 3)
print("{:.3f}".format(ratio) + "%")
모두 list형태로 입력 받고, 맨 첫 인덱스 값은 학생 수이기 때문에 인덱스 1부터 for문이 돌 수 있도록 하며 평균을 계산해준 후, 비율을 구해주었다.
(이전 풀이에서는 리스트 길이에서 1을 빼어 돌려주었다)
반올림은 round( ) 를 이용하여 해주었으나 40.000%로 출력되어야 하지만, 40.0%로 출력되는 문제점이 있었다. 따라서 이 문제는 format을 해주어 해결해주었다.
이전 풀이를 보면서 format 메소드 말고 % 연산자의 이용도 있었구나! 했다. 또 언더스코어를 이용하는 것, 리스트에서 [1:]처럼 슬라이싱을 이용하는 점 또한 다시 알게 되었다.
반응형