[초기 접근 방법]
1) 상위 15%, 하위 15% 절사
- 이 때, 소수점은 반올림 계산
2) 계산된 평균 반올림 계산
[생각]
1) 수식을 작성할 때, "0 / x" 와 같은 ZeroDivision 주의
2) 파이썬의 반올림은 ".5"와 같이 올림, 내림했을 때 동일하게 차이가 나는 경우에는 짝수 값으로 반올림 합니다.
→ 따라서 파이썬으로 풀 경우, epsilon. 즉 굉장히 작은 값을 더해 우리가 일반적으로 생각하는 반올림이 될 수 있게끔 해야 한다.
[코드]
# 풀이 시간 : 20분
# 시간복잡도 : O(NlogN)
# 공간복잡도 : O(N)
# 참고 : python round() 관련 자료
# https://blockdmask.tistory.com/418
import sys
input = sys.stdin.readline
N = int(input())
lst = [int(input()) for _ in range(N)]
EPS = 1e-9
lst.sort()
exclude = round(N * 0.15 + EPS)
sumI = 0
for i in range(exclude, N-exclude):
sumI += lst[i]
if sumI == 0: # ZeroDivision Error 방지
print(0)
else:
print(round(sumI / (N-2*exclude) + EPS))
https://www.acmicpc.net/problem/18110
'Algorithm > Math' 카테고리의 다른 글
[백준] 10166번 관중석 _ Python (0) | 2024.03.23 |
---|---|
[백준] 1676번 팩토리얼 0의 개수 _ Python (0) | 2024.03.21 |
[백준] 1676번 팩토리얼 0의 개수 _ Python (0) | 2024.02.18 |
[백준] 1011번 Fly me to the Alpha Centaur _ Python (0) | 2024.02.08 |