728x90
반응형
(학점*성적)을 모두 더해서 (총 학점의 합)으로 나눠주면 된다.
성적마다 정해진 점수가 있기 때문에 딕셔너리로 코드를 작성하였다.
또 반올림 처리를 위해 round 함수를 사용하였다.
하지만 round 함수의 특성 상 반올림이 제대로 되지 않는다.
round(4.5) -> 4
round(5.5) -> 6
소수점 앞의 숫자가 짝수면 소수점이 5 이상이어도 내려버리는 그런 특성이 있다.
그래서 이 문제를 푸는 다른 분들은 반올림 기능을 직접 구현하여 푸시는 분들이 대부분이었다.
나는 어떤 블로그에서 (10^-10)을 더하는 것을 보았고 그것으로 문제를 풀었다.
hap=0
chong=0
score={'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())
for i in range(n):
sub,si,hak=input().split()
si=int(si)
chong+=si
hap+=si*score[hak]
print("%.2f"%(round(hap/chong+10**-10,2)))
728x90
반응형
'프로그래밍 > 알고리즘' 카테고리의 다른 글
백준 1373 (0) | 2022.07.07 |
---|---|
백준 3711 파이썬 (0) | 2022.06.13 |
백준 9093 파이썬 (0) | 2022.01.19 |
백준 1110 파이썬 (0) | 2022.01.18 |
백준 2480 파이썬 (0) | 2022.01.17 |
댓글