머리속으로 그린 과정은 이러하다.
학점 따로, 과목 평점 따로 받아서 반복문 한번 돌 때 마다 (학점 과목평점), 학점을 total 변수에다 쌓아주고, 마지막에 (학점 과목평점)의 총합 / (학점의 총합) 출력하기.
total_son = 0
total_mom = 0
for i in range(20):
grade = input().split()
if grade[2] == 'P':
continue
if grade[2] == 'A+':
score = 4.5
elif grade[2] == 'A0':
score = 4.0
elif grade[2] == 'B+':
score = 3.5
elif grade[2] == 'B0':
score = 3.0
elif grade[2] == 'C+':
score = 2.5
elif grade[2] == 'C0':
score = 2.0
elif grade[2] == 'D+':
score = 1.5
elif grade[2] == 'D0':
score = 1.0
elif grade[2] == 'F':
score = 0
total_son += float(grade[1]) * score
total_mom += float(grade[1])
print(total_son / total_mom)
코드 풀이과정
내가 결국 계산해야할 총합 초기값을 total_son, total_mom으로 설정했다. (변수명이 잘 안떠올라 분자 분모를 son, mom으로 지었다. ㅋㅋ)
과목명-학점-과목평점 순서로 input을 받아서 iterable하게 처리하고, grade 변수에 저장하기.
과목명은 그냥 쓸데없으니까 버리고, grade1은 숫자로 처리해주고, grade[2] (과목 평점)는 무엇인지에 따라서 score에 따로 입력해줬다.
for문으로 20번 반복! total_son과 total_mom에 차곡차곡 쌓아서 나눠서 출력하면 끝!
type이 string인 소수점 숫자는 float으로 부동 소수점 숫자처리를 해야한다.
grade[2] 구할 때 좀 아쉬웠다. 각각의 grade에 점수가 정해져있기 때문에 list 만들고 index 이용했으면 더 간결했을 것 같다. 무지성 if문 난사가 조금 부끄럽지만 실수 또한 기록의 가치가 있으니까 ^^
아 그리고 이런거 입력 해라는대로 다 하면 시간도 오래걸리고 손꾸락 다뿌아진다. 과목명 가라치고 반복문 횟수 5번정도만 돌려서 결과값 잘 나오는지 확인해보는게 좋다.
조~금 아쉬웠지만 막힘없이 풀었으니 ok다.