[백준 BOJ] 25206번(너의 평점은) Python 풀이
# 해당 포스팅은 이제 막 알고리즘 공부를 시작한 초보 수준에서 작성했음을 이해해주시고, 비난보다는 따뜻한 조언을 부탁드립니다.
안녕하십니까, 간토끼입니다.
오늘은 백준 25206번 (너의 평점은)에 대해 다뤄보겠습니다.
1. 문제 링크
https://www.acmicpc.net/problem/25206
과목별 성적이 주어졌을 때 전공평점을 계산하는 프로그램을 짜는 것입니다.
전공 평점은 전공과목별 (학점 x 과목평점)의 합을 학점의 총합으로 나눈 것으로 계산할 수 있습니다.
이때 주의할 점은 P(Pass)/F(Fail) 과목은 P 또는 F로 표시되는데, Pass인 경우는 계산에서 제외해야 합니다.
20줄에 걸쳐 수강한 전공과목의 과목명 학점 등급 이 공백으로 구분됩니다.
2. 접근 방법
다음과 같이 접근하였습니다.
먼저 학점과 평점의 채점표(?)를 list로 만듭니다.
그리고 최종 성적 = total_score(누적 성적) / total_grade(누적 단위수) 를 계산하기 위해
tot_grade, tot_score 변수를 정의합니다.
입력 a은 공백으로 구분하여 리스트로 저장했는데요. 첫번째 입력인 과목명 a[0] 은 무시해도 무방합니다.
두번째 입력인 학점(편의상 credit라고 하겠습니다)을 float 형태로 저장해주고, 세번째 입력인 성적(등급)은 a[2]라고 하겠습니다.
이때 a[2] == "P(pass)"라면 continue로 해당 loop를 종료하고 다음 과목으로 넘어갑니다.
P가 아닌 다른 성적이라면 계산을 해야합니다.
기존에 정의한 grade_list에서 a[2]와 일치하는 원소의 index를 찾아서 이를 score로 바꿔서 계산합니다.
계산된 score는 단위수(credit)과 곱하여 해당 과목의 변환된 최종 성적이 되고, 이를 total_score에 더해줍니다.
마찬가지로 단위수(credit)는 최종 성적 계산식의 분모가 되므로 total_credit에 더해줍니다.
최종적으로 loop가 종료된 후 계산된 total_score에 total_credit으로 나누어서 평점을 계산합니다.
3. 코드
# 백준 : 25206번 너의 평점은
# initial setting
grade_list = ["A+", "A0", "B+", "B0", "C+", "C0", "D+", "D0", "F"]
score_list = [4.5, 4.0, 3.5, 3.0, 2.5, 2.0, 1.5, 1.0, 0.0]
tot_credit = 0 # 누적 단위수(sum 단위수)
tot_score = 0 # 누적 성적(sum 단위수x성적)
for i in range(20):
a = list(map(str, input().strip().split()))
credit = float(a[1])
if a[2] == "P":
continue
else:
idx = grade_list.index(a[2])
score = score_list[idx]
tot_score += (credit*score)
tot_credit += credit
avg_score = float(tot_score / tot_credit)
print(avg_score)
감사합니다.
잘 읽으셨다면 게시글 하단에 ♡(좋아요) 눌러주시면 감사하겠습니다 :)
(구독이면 더욱 좋습니다 ^_^)
* 본 블로그는 학부생이 운영하는 블로그입니다.
따라서 포스팅에 학문적 오류가 있을 수 있으며, 이를 감안해서 봐주시면 감사하겠습니다.
- 간토끼(DataLabbit)
- B.A. in Economics, Data Science at University of Seoul