백준 25206번 '너의 평점은' - [Python] Dictionary

림민지·2025년 1월 31일

🔗 https://www.acmicpc.net/problem/25206

#️⃣ 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))
profile
@lim_128

0개의 댓글