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 |
댓글