https://www.acmicpc.net/problem/18110
import sys
input = sys.stdin.readline
n = int(input())
if n == 0: # 문제의 '아직 아무 의견이 없다면 문제의 난이도는 0'
print(0)
else:
arr = [0] * n # arr 초기화
for i in range(n): # 정수를 입력받아 arr에 저장
arr[i] = int(input())
arr.sort() # arr 정렬
rid = round(n * 0.15) # rid = 의견 개수의 15%
arr = arr[rid:n-rid] # 상위, 하위 15% 제거
print(round(sum(arr)/(n-2*rid))) # 절사평균 출력
분명 아무 오류 없을 거라 생각했는데...
충격적인 반전이 있었다.
import sys
input = sys.stdin.readline
def round2(num):
return int(num) + (1 if num-int(num)>=0.5 else 0)
n = int(input())
if n == 0:
print(0)
else:
arr = [0] * n
for i in range(n):
arr[i] = int(input())
arr.sort()
rid = round2(n * 0.15)
arr = arr[rid:n-rid]
print(round2(sum(arr)/len(arr)))
반전의 정체는 바로
round() 함수는 사사오입이 아닌 오사오입(round-to-nearest-even) 이라는 것...!
이게 무슨 소리냐면..
round(2.5)
의 결과는 3이 아닌 2
이다.round(3.5)
의 결과는 4
이다.따라서 우리에게 익숙한 사사오입의 반올림을 하고 싶다면