[백준 / 4344] 평균은 넘겠지


날짜: 2021년 6월 14일
소요 시간: 50분 26초
카테고리: 수학문제
태그: bronze.1, 4344, 파이썬

백준 4344 - 평균은 넘겠지

입출력 예시

예제 입력예제 출력
5 
5 50 50 70 80 10040.000%
7 100 95 90 80 70 60 5057.143%
3 70 90 8033.333%
3 70 90 8166.667%
9 100 99 98 97 96 95 94 93 9155.556%

내가 적은 코드

import sys
N = int(input())
for i in range(N):
    count = 0
    n = list(map(int, sys.stdin.readline().split()))
    avg = (sum(n)-n[0])/n[0]
    for j in n[1:]:
        if j > avg:
            count += 1
    answer = count/n[0]*100
    print(f"{answer:.3f}%")

풀이 과정

map을 활용해서 n리스트에 성적 값을 입력하고, 리스트 슬라이싱을 통해 평균값을 구한다.
구한 평균값을 기준으로 평균보다 높은 점수가 몇 개가 있는지 반복문을 통해 count에 저장하고,
answer에 그 비율을 저장한다.

마지막에 answer을 float형으로 소수점 셋째자리까지 f-string을 통해 출력

왜 정답률이 40%가 되지않는지 의아할 정도로 쉬운 문제이지만 자료형에 대한 이해도가 낮으면 계속 오류가 날 수도 있겠다는 생각을 했다.
물론 나 또한 그거 때문에 한참을 헤매었다.

베스트 코드

n = int(input())
a=list(map(int, input().split()))
m = max(a)
for i in range(n):
    a[i] = a[i]/m*100
print(sum(a)/n)

반성

  • 변수 N의 타입을 파이참에서는 자동으로 정수형으로 지정 해 주었으나 백준 인터프리터에서는 문자열로 받았던지 뭔진 모르겠지만 파이참에서는 잘 실행되는 코드가 왜 백준에서는 TypeError가 나는지 계속 못찾아서 한참을 헤매었다.
  • 타입 선언을 확실하게 잡아야 된다…




© 2021. by hminkim