🔗 https://www.acmicpc.net/problem/25206
인하대학교 컴퓨터공학과를 졸업하기 위해서는, 전공평점이 3.3 이상이거나 졸업고사를 통과해야 한다. 그런데 아뿔싸, 치훈이는 깜빡하고 졸업고사를 응시하지 않았다는 사실을 깨달았다!
치훈이의 전공평점을 계산해주는 프로그램을 작성해보자.
전공평점은 전공과목별 (학점 × 과목평점)의 합을 학점의 총합으로 나눈 값이다.
인하대학교 컴퓨터공학과의 등급에 따른 과목평점은 다음 표와 같다.
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
P/F 과목의 경우 등급이 P또는 F로 표시되는데, 등급이 P인 과목은 계산에서 제외해야 한다.과연 치훈이는 무사히 졸업할 수 있을까?
20줄에 걸쳐 치훈이가 수강한 전공과목의 과목명, 학점, 등급이 공백으로 구분되어 주어진다.
치훈이의 전공평점을 출력한다.
정답과의 절대오차 또는 상대오차가
10^-4 이하이면 정답으로 인정한다.
딕셔너리를 사용하면 후딱 풀어낼 수 있다.
먼저 dictionary에 각 점수에 따라서 몇점이 부여되는지 넣어주자
S = {"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}
겹치는 과목은 없으므로 20번 동안 과목명(subject), 학점(point), 점수(score)를 받아서 계산하면 된다(과목명은 쓸데가 없다 .. )
입력받은 score를 S dictionary에서 키 값으로 사용하면 된다 -> S[score]
total_score=0
n=0
for i in range(20) :
subject, point, score = input().split()
if score !="P" :
total_score += float(point) * float(S[score])
n+=float(point)
P가 아닌 점수만 total_score*point로 총점을 계산하고, n에 학점도 누적한다
출력할때는 소수점 6번째자리까지 출력하면 되므로
print("%.6f" %(total_score/n))
%.6f를 사용해서 나타내주면 된다.
S = {"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}
total_score=0
n=0
for i in range(20) :
subject, point, score = input().split()
if score !="P" :
total_score += float(point) * float(S[score])
n+=float(point)
print("%.6f" %(total_score/n))