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

간단한 문제라고 생각해서 바로 코드 짜서 돌렸더니
시 간 초 과
오잉? 시간복잡도도 괜찮은데 왜지?
이유는 input() 때문이었다.
입력으로 주어지는 숫자 개수가 10의5승.........짱많음
이런 경우엔 input()말고 sys.stdin.readline()을 써야 빠른 입력을 할 수 있다.
풀이
import math, sys
n = int(sys.stdin.readline())
if(n == 0):
print(0)
else:
arr = [0] * n
check = math.floor(n*0.15+0.5)
sum = 0
for i in range(n):
arr[i] = int(sys.stdin.readline())
arr.sort()
for i in range(check, n - check):
sum += arr[i]
average = math.floor(sum / (n - 2*check) + 0.5)
print(average)
'PS > 수학' 카테고리의 다른 글
[백준] 17103번: 골드바흐 파티션 파이썬 (0) | 2024.09.09 |
---|---|
[백준] 4134번: 다음 소수 파이썬 (1) | 2024.09.06 |
[백준]2485번: 가로수 파이썬 (0) | 2024.09.05 |
1735번: 분수 합 파이썬 (0) | 2024.09.04 |
[백준] 13241번: 최소공배수 파이썬 (3) | 2024.09.03 |