728x90
반응형
https://www.acmicpc.net/problem/6986
문제 해결
- 우선 풀의 과정 순서는 어렵지 않다.
- 리스트를 만들어서 절사평균은 앞에 k개, 뒤에 k개를 빼고 평균을 구하고, 보정평균은 앞에 k개, 뒤에 k개를 각각 k, -k-1 인덱스 값으로 변환시키고 평균을 구하면 된다.
- 하지만 93%쯤에서 계속 오답이 나오는데 이유가 파이썬 나누기를 하는 과정중에 소수점 일부 계산이 손실되어 잘못 답이 나올 수 있다고 한다. 그래서 아주 작은 수를 더해줘서 그 손실을 막는다고 한다. (사실 생각하지 못했고 어려웠다.)
CODE
import sys
input = sys.stdin.readline
import copy
if __name__ == "__main__":
n, k = map(int, input().split())
S = sorted([float(input()) for _ in range(n)])
t = sum(S[k:n-k])/(n-2*k)
if k ==0:
print(f"{t:.2f}")
print(f"{t:.2f}")
exit()
C = sorted(copy.deepcopy(S))
for i in range(k):
C[i] = C[k]
C[-i-1] = C[-k-1]
b = sum(C)/n
t += 0.00000001
b += 0.00000001
print(f"{t:.2f}")
print(f"{b:.2f}")
728x90
반응형
'알고리즘 > [python] 백준 BOJ' 카테고리의 다른 글
[python] 백준 2150 Strongly Connected Component (0) | 2024.05.09 |
---|---|
[python] 백준 2635 수 이어가기 (0) | 2024.04.18 |
[python] 백준 14582 오늘도 졌다 (0) | 2024.04.14 |
[python] 백준 2643 색종이 올려 놓기 (0) | 2024.04.08 |
[python] 백준 1507 궁금한 민호 (0) | 2024.04.06 |
댓글