728x90

# 해당 포스팅은 이제 막 알고리즘 공부를 시작한 초보 수준에서 작성했음을 이해해주시고, 비난보다는 따뜻한 조언을 부탁드립니다.


안녕하십니까, 간토끼입니다.

오늘은 백준 25206번 (너의 평점은)에 대해 다뤄보겠습니다.

1. 문제 링크

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

 

25206번: 너의 평점은

인하대학교 컴퓨터공학과를 졸업하기 위해서는, 전공평점이 3.3 이상이거나 졸업고사를 통과해야 한다. 그런데 아뿔싸, 치훈이는 깜빡하고 졸업고사를 응시하지 않았다는 사실을 깨달았다! 치

www.acmicpc.net

과목별 성적이 주어졌을 때 전공평점을 계산하는 프로그램을 짜는 것입니다.

전공 평점은 전공과목별 (학점 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

728x90

+ Recent posts