본문 바로가기
Algorithm/Math

[백준] 18110번 solved.ac _ Python

by wch_t 2024. 2. 17.

[초기 접근 방법]

1) 상위 15%, 하위 15% 절사

   - 이 때, 소수점은 반올림 계산

 

2) 계산된 평균 반올림 계산

 

 

 

[생각]

1) 수식을 작성할 때, "0 / x" 와 같은 ZeroDivision 주의

 

2) 파이썬의 반올림".5"와 같이 올림, 내림했을 때 동일하게 차이가 나는 경우에는 짝수 값으로 반올림 합니다.

     → 따라서 파이썬으로 풀 경우, epsilon. 즉 굉장히 작은 값을 더해 우리가 일반적으로 생각하는 반올림이 될 수 있게끔 해야 한다.

 

https://blockdmask.tistory.com/418

 

 

 

[코드]

# 풀이 시간 : 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

 

18110번: solved.ac

5명의 15%는 0.75명으로, 이를 반올림하면 1명이다. 따라서 solved.ac는 가장 높은 난이도 의견과 가장 낮은 난이도 의견을 하나씩 제외하고, {5, 5, 7}에 대한 평균으로 문제 난이도를 결정한다.

www.acmicpc.net