[백준 / 4344] 평균은 넘겠지
in Problem Solving on BaekJoon
날짜: 2021년 6월 14일
소요 시간: 50분 26초
카테고리: 수학문제
태그: bronze.1
, 4344
, 파이썬
입출력 예시
예제 입력 | 예제 출력 |
---|---|
5 | |
5 50 50 70 80 100 | 40.000% |
7 100 95 90 80 70 60 50 | 57.143% |
3 70 90 80 | 33.333% |
3 70 90 81 | 66.667% |
9 100 99 98 97 96 95 94 93 91 | 55.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가 나는지 계속 못찾아서 한참을 헤매었다. - 타입 선언을 확실하게 잡아야 된다…