반응형
[ Contents ]
1. 문제 (링크 참조)
2. 문제 풀이
30% 절사평균을 사용하여 solved.ac의 난이도를 산출합니다.
자료의 총 개수에서 상위 n%, 하위 n%를 제거한 평균
절사평균은 극단적인 표본을 제거하기 위해 상하위 n%를 제거한 후의 평균입니다. 평점이나 난이도를 매길 때, 극단적으로 높게 주거나 낮게 주는 사람들이 꽤 있죠...
그런 사람들로 인해 평균이 왜곡되는 것을 막고자, 절사평균을 사용하기도 합니다. 사실 데이터 분석 분야에서는 이러한 이유 때문에 평균보다도 중간값을 더 선호하기도 합니다.
3. 코드
import sys
input = sys.stdin.readline
def round2(num): # 사사오입
return int(num) + (1 if num - int(num) >= 0.5 else 0)
# 입력
n = int(input())
ban = round2(n*0.15)
if n == 0:
print(0)
else:
score = []
for _ in range(n):
score.append(int(input()))
score.sort()
# 출력
res = 0
for i in range(ban, n-ban):
res += score[i]
res = res/(n-2*ban)
print(round2(res))
여기서 주의할 점은 'round' 내장함수를 그대로 사용하면 안된다는 점입니다.
print(round(1.5)) # 2
print(round(2.5)) # 2
print(round(3.5)) # 4
round함수는 저희가 통상적으로 알고 있는 사사오입 반올림이 아닙니다.
일명 5사5입으로 반올림 자리가 5일 때 앞자리가 홀수이면 올림, 짝수이면 내림합니다.
따라서 4사5입 반올림 함수를 따로 정의해서 사용해야 합니다.
반응형
'Algorithm' 카테고리의 다른 글
[구현/수학] 백준 28419 더하기 - 파이썬(Python) (0) | 2023.08.02 |
---|---|
[구현/수학] 백준 24313 알고리즘 수업 - 점근적 표기 1 - 파이썬(Python) (1) | 2023.07.24 |
[구현/수학] 백준 28352 10! - 파이썬(Python) (0) | 2023.07.20 |
[구현/수학] 백준 10093 숫자 - 파이썬(Python) (0) | 2023.07.18 |
[구현/수학] 백준 27434 팩토리얼 3 - 파이썬(Python) (0) | 2023.07.18 |
댓글