© 2025 anveloper.dev
GitHub·LinkedIn·Contact

목차

  • 문제
  • 입력
  • 출력
  • 예제
  • 풀이
  • 코드
  • 복잡도
풀이 목록으로 돌아가기

BOJ 2755 - 이번학기 평점은 몇점?

2025-07-15
BOJ
브론즈 I
python
원본 문제 보기
수학
구현
사칙연산

문제

BOJ 2755 - 이번학기 평점은 몇점?

N개 과목의 이름, 학점, 성적이 주어질 때 가중 평균 평점(GPA)을 계산하라.

입력

과목 수 N, 이후 N줄에 과목명, 학점, 성적이 주어진다.

출력

GPA를 소수점 2자리까지 출력한다.

예제

입력출력
3 CSE A+ 3 MAT B0 2 ENG C- 23.01

풀이

성적을 점수로 변환하여 학점 가중 평균을 계산한다.

  1. A+F까지의 성적을 점수(4.30.0)로 매핑하는 딕셔너리를 정의한다
  2. 각 과목의 (학점 × 성적 점수)를 합산하고, 전체 학점도 합산한다
  3. 총 가중합 / 총 학점으로 GPA를 계산한다
  4. 소수점 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) — 고정 크기 매핑 딕셔너리