홍우진의 개발 일기장

[백준] 18110번: solved.ac / 파이썬 본문

알고리즘/백준

[백준] 18110번: solved.ac / 파이썬

홍우진 2024. 12. 5. 13:33
728x90
반응형

문제 링크


https://www.acmicpc.net/problem/18110

 

풀이 코드


import sys
input = sys.stdin.readline

def round(x):
    if x - int(x) >= 0.5:   #소수점이 0.5 이상일 때 반올림해서 리턴
        return int(x) + 1
    else:
        return int(x)   #이하라면 그냥 리턴

n = int(input())
num = round(n*0.15) #절사평균 계산 시 제외할 값의 수

level = [int(input()) for _ in range(n) ]   #리스트 컴프리헨션 후 정렬
level.sort()

if n: #n이 참이라면
    if num: #num이 참이라면
        print(round(sum(level[num : -num]) / len(level[num : -num])))   # 리스트 앞 뒤로 전체 길이의 15%를 반올림한 값을 제외함, 리스트의 평균 반올림하여 출력
    else:
        print(round(sum(level)/len(level))) 
else:
    print(0)

코드 해석


평균을 구할 때 round() 라는 파이썬 내장 함수가 있지만

그 함수를 사용하면 런타임에러가 나타난다.

런타임에러를 방지하기 위하여 sys.stdin.readline을 사용하고

평균을 구하는 함수를 직접 만든다.

728x90
반응형
Comments