[Baekjoon] 4344. 평균은 넘겠지

1 minute read

평균은 넘겠지

문제 설명


문제

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

입력

첫째 줄에는 테스트 케이스의 개수 C가 주어진다.

둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.

출력

각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다.

예제 입력 1 복사

5
5 50 50 70 80 100
7 100 95 90 80 70 60 50
3 70 90 80
3 70 90 81
9 100 99 98 97 96 95 94 93 91

예제 출력 1 복사

40.000%
57.143%
33.333%
66.667%
55.556%


문제 풀이


각 테스트 케이스에 대해,

  1. N과 scores 리스트를 생성하고
  2. 평균을 계산하고
  3. 평균을 넘는 점수의 개수를 셉니다.

그리고 마지막으로는 N으로 나눠 최종 비율을 answer 리스트에 저장합니다.

import sys
input = sys.stdin.readline

for i in range(int(input())):
    answer = 0
    line = list(map(int,input().split()))
    N,scores = line[0],line[1:]
    ave = sum(scores)/N
    for score in scores:
        if score > ave: answer += 1
    print("{:.3f}".format(answer/N*100)+'%')


이 문제에서는 정답을 소수점 셋째자리까지 반올림하여 출력해야 했는데요,

이 부분에서 인터넷 서칭한 분들이 많을거라고 생각합니다…ㅎㅎ(저는 했거든요)

그래서! 파이썬에서 소수점을 관리하는 방법 2가지에 대해 확실히 알아두고 넘어갑시다.

1. round 함수 사용하기

round 내장 함수는 파이썬에서 제공하는 가장 기본적인 소수점 처리 합수입니다.

round(, 소수점 아래 자릿수)

round 함수는 반올림을 하는 함수로, 첫번째 인자로 값을, 두번째 인자로 소수점 아래 몇번째 자리까지 반올림할 것인지를 전달하죠.

그런데 이 round 함수는 말 그대로 ‘반올림’을 하기 때문에, 소수점이 없는 값에 사용한다고 해서 소수점을 늘려주지는 않죠.

in:
  print(round(4.0, 3))
  
out:
  4.0

2. format 함수 사용하기

format 함수는 출력 시 서식을 지정하기 위한 용도로 많이 쓰이며, 다음과 같이 사용합니다.

"~~~{0}~~~{1}".format(값1, 값2)

중괄호({ }) 안에는 format 함수 인자의 몇 번째 값을 사용할 것인지 지정합니다.

우리가 원하는 소수점 제한은 아래와 같이 할 수 있습니다.

int:
  print("{:.3f}".format(4.0))
  
out:
  4.000


이외에도 여러 방법들이 있을 수 있지만, 대표적으로 사용하는 방법 2가지를 알아봤습니다.


이상 포스팅 마치겠습니다!

Leave a comment