## solution
전공평점 계산하기. p/f과목에서 등급이 p인 과목은 계산에서 제외해야 한다. f는 일반 과목처럼 0.0점 처리해야 되는것으로 보인다.
정답과의 절대오차 또는 상대오차가 10^-4 이하면 정답으로 인정한다.
과목명 학점 등급 순서로 주어지는데, 학점*과목평점의 합을 학점의 총합으로 나누어야 한다.
여러줄이 주어지는데 일일이 입력하는것보다는 한번에 처리할수 있도록 풀어보면.
## CODE
```python
import sys
gpa_count = 0
sub_count = 0
gpa_dict = {'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}
input = sys.stdin.readlines()
for tmp in input:
line = tmp.split()
if '\x1a' in line[2]: line[2] = line[2].replace('\x1a','')
if line[2] == 'P': continue
sub_count += float(line[1])
gpa_count += gpa_dict[line[2]] * float(line[1])
print(gpa_count/sub_count)
```
readline()을 사용하여 여러줄을 읽어올때, 매 줄 끝마다 개행문자가 붙게 되고, 맨 끝에는 '\x1a'라는 파일 끝을 표시하는 EOF marker가 붙게 된다. 이것만 문제생기지 않는다면 크게 걸리는게 없다. 한줄씩 받아와서 split() 할때 줄 끝에 붙은 개행문자는 알아서 지워진다.
덧붙이면, 이 풀이로 입력을 한 후에 ctrl + z를 2회 눌러야 입력 처리가 된다. 이전에 EOFError문제 풀때 했었는데 다시 해보길 잘한듯 싶다.
open(0) 이용해서 받아와도 좋고, 다른 풀이도 대부분 dictionary 만들어서 풀어낸걸로 보인다.
0 댓글