알고리즘

[백준, 파이썬, 25206번] 너의 평점은

hminor 2023. 10. 11. 10:44

 

풀이

 

  • 우선 과목 평점에 대한 값을 딕셔너리 타입으로 정리한 뒤
  • subject에 입력값을 받은 다음 하나씩 조회를 했는데
  • 문제에서 P의 경우에는 점수를 반영하지 않는다고 했기에 continue를 사용
  • 이외에는 우선 hap1에는 전공과목별의 누적합을 계산하고
  • hap2에는 학점의 합을 누적합을 계산하여 
  • 최종적으로 나눈 값을 round로 6자리까지 보여주도록하며 반올림하도록 하여 해결
  • 다만 여기서 0을 나눈 값에 대한 에러 또는 0.0으로 표기되는 것에 대한 조건을
  • 하나 더 추가하여 문제를 해결.

 

import sys
input = sys.stdin.readline
hap1,hap2 = 0.0,0.0
_dic = {'A+': 4.5, 'A0': 4.0, 'B+': 3.5, 'B0': 3.0, 'C+': 2.5, 'C0': 2.0, 'D+': 1.5, 'D0': 1.0, 'F': 0.0}
for i in range(20):
    subject = list(input().rstrip('\n').split())
    if subject[-1] == 'P': continue
    hap1 += float(subject[1])*_dic[subject[-1]]
    hap2 += float(subject[1])
if hap1 == 0.0 or hap2 == 0.0: print('0.000000')
else: print(round(hap1/hap2,6))