문제
N개 과목의 이름, 학점, 성적이 주어질 때 가중 평균 평점(GPA)을 계산하라.
입력
과목 수 N, 이후 N줄에 과목명, 학점, 성적이 주어진다.
출력
GPA를 소수점 2자리까지 출력한다.
예제
| 입력 | 출력 |
|---|---|
3 CSE A+ 3 MAT B0 2 ENG C- 2 | 3.01 |
풀이
성적을 점수로 변환하여 학점 가중 평균을 계산한다.
- A+
F까지의 성적을 점수(4.30.0)로 매핑하는 딕셔너리를 정의한다 - 각 과목의 (학점 × 성적 점수)를 합산하고, 전체 학점도 합산한다
- 총 가중합 / 총 학점으로 GPA를 계산한다
- 소수점 2자리로 반올림하여 출력한다
핵심 아이디어: 딕셔너리로 성적-점수 매핑을 정의하면 조건 분기 없이 간결하게 변환할 수 있다.
코드
d = {"A+": 4.3, "A0": 4.0, "A-": 3.7, "B+": 3.3, "B0": 3.0,
"B-": 2.7, "C+": 2.3, "C0": 2.0, "C-": 1.7, "D+": 1.3,
"D0": 1.0, "D-": 0.7, "F": 0.0}
N = t = 0
for _ in range(int(input())):
s, n, g = input().split()
n = int(n)
N += n
t += n*d[g]
print("%.2f" % (round(t/N + 10**-10, 2)))복잡도
- 시간: O(N) — 과목 수만큼 순회
- 공간: O(1) — 고정 크기 매핑 딕셔너리