[Python] 백준 18110번 - solved.ac

유빈·2024년 2월 6일
0

Algorithms

목록 보기
1/35
post-thumbnail

📌 문제 링크
18110번: solved.ac


1. 문제 이해

절사평균
: 편차가 큰(극단치) 자료를 제거한 자료들의 평균을 구해주기 위해 정렬된 자료에서 n%만큼 제거하고 나머지의 평균을 구한다.

  • 아직 아무 의견이 없다면 문제의 난이도는 0으로 결정한다.
  • 의견이 하나 이상 있다면, 문제의 난이도는 모든 사람의 난이도 의견의 30% 절사평균으로 결정한다.


2. 해결 전략

푸는 방법은 간단하다.
입력받는 수들을 정렬하고 절사평균을 구해주면 된다.



3. round함수 주의

Python에서의 round함수는 5사5입 반올림을 한다.
즉, 5미만이면 내리고 5초과이면 올린다.

하지만, 우리는 4사5입(4이하 내림, 5이상 올림)을 주로 사용하기 때문에 이 문제에서도 4사5입을 따라야 한다.


Python에서의 4사5입은 다음과 같이 구현할 수 있다. (블로그 참고)

def round2(a):
    return int(a) + (1 if a - int(a) >= 0.5 else 0)


4. 전체 코드

input = open(0).readline

def round2(a):
    return int(a) + (1 if a - int(a) >= 0.5 else 0)
num = []
for i in range(N := int(input())):
    num.append(int(input()))

if N == 0:
    print(0)
else:
    print(round2(sum(sorted(num)[round2(N*0.15) : N-round2(N*0.15)])/(N-(2*round2(N*0.15)))))

profile
🌱

0개의 댓글