티스토리 뷰

알고리즘

백준 25206 - 파이썬

취뽀가자!! 2023. 9. 25. 20:06

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

 

25206번: 너의 평점은

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

www.acmicpc.net

문제 풀이

문제에서 시키는데로 (학점 * 과목평점) / 학점의 총합 을 구해주면 된다.

 

rating_dic = {'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}

rate = 0
score_sum = 0

for _ in range(20):
  subject, score, grade = input().split()

  if grade != 'P':
    rate += float(score) * rating_dic[grade]
    score_sum += float(score)

  # if grade != 'P':
  #   rate += float(score) * rating_dic[grade]
  # score_sum += float(score)

print("%.6f" % (rate/score_sum))

 

딕셔너리에 각 등급별 점수를 입력해 두고 계산할 때 입력된 등급을 점수로 바로 변환할수 있도록 하였다. 여기서 주의할 점은 주석처리한 부분처럼 P인 과목은 제외시켜야 되는데 과목평점은 P를 제외한 값을 구하고, 학점의 총합은 P도 포함시키면 안된다. 처음에 이렇게 했다가 틀렸다. 해당 코드는 정답처리 되었고, 다른 사람의 코드도 찾아보았다.

 

rating = ['A+', 'A0', 'B+', 'B0', 'C+', 'C0', 'D+', 'D0', 'F']
grade = [4.5, 4.0, 3.5, 3.0, 2.5, 2.0, 1.5, 1.0, 0]

total = 0
result = 0

for _ in range(20):
  s, p, g = input().split()
  p = float(p)
  if g != 'P':
    total += p
    result += p * grade[rating.index(g)]

print('%.6f' % (result / total))

해당 코드는 등급과 점수의 인덱스를 매칭시켜 풀었다. 입력된 등급의 점수를 찾을때는 index함수를 이용하여 해당 등급이 있는 인덱스의 위치를 반환한 뒤, 반환된 인덱스의 위치에서 점수를 찾았다.

'알고리즘' 카테고리의 다른 글

백준 11005 - 파이썬  (0) 2023.09.30
백준 2653 - 파이썬  (0) 2023.09.29
백준 1316 - 파이썬  (2) 2023.09.25
백준 - 1157 파이썬  (0) 2023.09.20
백준 11718 - 파이썬  (0) 2023.09.16
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함