Algorithm/acmicpc.net

파이썬 round 함수에 0.5를 입력하면? (#18110)

winney916 2024. 7. 1. 11:05
728x90

#18110 solved.ac https://www.acmicpc.net/problem/18110

 

정답코드

def round(x):
    return int(x) + 1 if (x - int(x)) >= 0.5 else int(x)


n = int(input())

if n == 0:
    print(0)
else:
    nums = [int(input()) for i in range(n)]
    nums.sort()

    cutting = round(n * 15 / 100)
    # print(nums, cutting)
    nums = nums[cutting : n - cutting]
    # print(nums)

    answer = sum(nums) / len(nums)

    print(round(answer))

 

 

처음에 잘 짜서 제출했는데, 틀렸다.

 

이유를 알 수가 없었다.

 

문제는 다음과 같았다.

 

문제를 풀기 위해서, 0.5를 1로 반올림 할 필요가 있다.

 

하지만 파이썬의 round함수는 0.5를 0으로 반올림 한다.

 

따라서 별도의 라운드 함수를 구성해줘야한다. (*위의 round 함수 정의부분)

 

 

음.. 이런거 잊으면 문제풀다가 많이 당황할 것 같다.

 

잘 알지 못하는 내장함수를 쓰는 것은 위험한 것 같다

알 수 없는 문제가 발생할 때에는 내장함수를 나의 논리대로 재구성 해보면 좋을 것 같다.