본문 바로가기
프로그래밍/알고리즘

백준 2755 파이썬

by laoching 2022. 1. 20.
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

댓글