[백준] 6986번 절사평균

거북이·2023년 3월 17일
0

백준[실버3]

목록 보기
66/92
post-thumbnail

💡문제접근

  • 보정평균과 절사평균을 구현하는 과정은 어렵지 않았는데 결과를 출력하는 부분에서 소수점 오차로 인해서 계속 WA를 받았다. 질문게시판에 있는 소수점 오차에 대한 질문 글을 읽고 이해할 수 있었다.
  • 만약 예를 들어 0.5의 경우를 생각해보자. 만일 이 값이 0.4999999999999와 같이 저장되어 있다면 소수 첫째 자리에서 반올림을 한다면 1이 아니라 0이 나온다. 이런 오차가 존재할 수 있기 때문에 1e-8을 더해주는 것이다.

💡코드(메모리 : 35892KB, 시간 : 92ms)

import sys
input = sys.stdin.readline

N, K = map(int, input().strip().split())
li = []
for i in range(N):
    score = float(input())
    li.append(score)

li.sort()
js = sum(li[K:N-K]) / (N - K * 2)
bs = (sum(li[K:N-K]) + li[K] * K + li[N-K-1] * K) / N
print("%.2f" % (js + 1e-8))
print("%.2f" % (bs + 1e-8))

💡소요시간 : 15m

0개의 댓글