본문 바로가기
python-algorithm

백준 2755 이번학기 평점은 몇점?

by 무적김두칠 2022. 1. 28.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from math import floor
 
scores={'A+'4.3'A0'4.0'A-'3.7,
       'B+'3.3'B0'3.0'B-'2.7,
       'C+'2.3'C0'2.0'C-'1.7,
       'D+'1.3'D0'1.0'D-'0.7,
       'F'0.0}
n=int(input())
ans=0
sumScore=0
for i in range(n):
    name,score,grade=input().split()
    sumScore+=int(score)
    ans+=int(score)*scores[grade]
tmpScore=(ans/sumScore)*1000
if tmpScore%10>4:
    tmpScore=tmpScore+10-tmpScore%10
else:  tmpScore-=tmpScore%10
tmpScore/=1000
print("%.2f"%tmpScore)
cs

반올림 하면 사사오입 이라는게 일반적인데
Python의 round함수는 사사오입 방식 (round_half_up) 이 아닌 round_half_even 방식이라

4.5를 round하면 4가 나오고
5.5를 round하면 6이 나와버리는 골때리는 상황이 나오게 됩니다.

1
2
3
4
print(round(4.5))
--> 4
print(round(5.5))
--> 6
cs

따라서 이 문제에 한해서는 round 함수를 쓰지 않고 조그맣게 구현함.

반응형

'python-algorithm' 카테고리의 다른 글

백준 1920 수찾기  (0) 2022.03.07
백준 24116 알고리즘 수업 - 피보나치 수 1  (0) 2022.02.07
백준 4562 No Brainer  (0) 2022.01.27
백준 11367 Report Card Time  (0) 2022.01.19
백준 11944 NN  (0) 2022.01.19

댓글