본문 바로가기
CS/algorithm

[백준 18110번] solved.ac 파이썬(python)

by 주식하는 개발자 하워드 2023. 6. 7.

 

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

 

18110번: solved.ac

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

www.acmicpc.net

 

처음 문제를 풀었을 때

정말 쉽구나 생각했다.

 

그러나

제출하고 오류가 나왔을 때

0 division error만 해결하면 되겠구나 했었다,

 

그런데 계속 틀리는 것을 보니

무엇이 문제인 줄 몰라 검색해보았다.

 

 

이 분의 블로그를 보고 

https://m.blog.naver.com/PostView.nhn?blogId=herbdoc95&logNo=221574077380&proxyReferer=http:%2F%2Fblog.naver.com%2FPostView.nhn%3FblogId%3Dherbdoc95%26logNo%3D221574077380 

 

파이썬 round() 반올림 사용 시 주의점

round() 파이썬에서는 math 라이브러리를 import 하지 않아도 round 함수를 사용할 수 있네요. 오홋~! 그런...

blog.naver.com

 

파이썬의 round함수에 문제점이 있어서

우리가 알고있는 반올림함수를 만들어줘야 했다.

 

sys를 사용하지 않으면

시간초과가 발생한다.

 

꼭 사용하자..!

import sys
input = sys.stdin.readline

def banolim(num):
    if num - int(num) >= 0.5:
        return int(num) + 1
    else:
        return int(num)

n = int(input())
if n:
    lst = [int(input()) for _ in range(n)]
    lst.sort()
    # print(lst)
    a = banolim(n * 0.15)
    # print(a)
    if a != 0:
        a_lst = lst[a:-a]
        print(banolim(sum(a_lst)/len(a_lst)))
    else:
        print(banolim(sum(lst)/len(lst)))
else:
    print(0)

'CS > algorithm' 카테고리의 다른 글

애드 혹 알고리즘  (0) 2024.06.08
[백준 1676번] 팩토리얼 0의 개수 파이썬(python)  (0) 2023.06.08
백준 2750 파이썬  (0) 2023.02.06

댓글