백준 25206번 바로가기

나의 풀이

import sys

rule={'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}

score = 0.0
n = 0.0
for sbj in sys.stdin:
  sbj = sbj.split()
  if sbj[2] == 'P':
    pass
  else:
    score += rule[sbj[2]] * float(sbj[1])
    n += float(sbj[1])

print(score/n)

CODE REVIEW

  1. 문제 조건에서 20줄에 걸쳐 성적이 제공된다고 했는데, 일반적인 n줄의 성적에도 적용할 수 있도록 범용성을 높이기 위해 for sbj in sys.stdin:으로 계속해서 input을 받아주었다.
  2. 나의 경우 rule이라는 학점에 대한 정보를 dict에 담았는데, 다른 코드들을 살펴보니 g=['P','F','D0','D+','C0','C+','B0','B+','A0','A+'] 이런 리스트를 만들고 g.index(grade) * 0.5하는 식으로 학점을 구했다. 그런데 사실 이건 list보다 dict이 깔끔하지 않나 생각된다.