백준 25206 (너의 평점은) - Python

김종언·2024년 1월 13일
0

백준

목록 보기
1/18
post-thumbnail

풀이

머리속으로 그린 과정은 이러하다.
학점 따로, 과목 평점 따로 받아서 반복문 한번 돌 때 마다 (학점 과목평점), 학점을 total 변수에다 쌓아주고, 마지막에 (학점 과목평점)의 총합 / (학점의 총합) 출력하기.

total_son = 0
total_mom = 0

for i in range(20):
    grade = input().split()
    if grade[2] == 'P':
        continue
    if grade[2] == 'A+':
        score = 4.5
    elif grade[2] == 'A0':
        score = 4.0
    elif grade[2] == 'B+':
        score = 3.5
    elif grade[2] == 'B0':
        score = 3.0
    elif grade[2] == 'C+':
        score = 2.5
    elif grade[2] == 'C0':
        score = 2.0
    elif grade[2] == 'D+':
        score = 1.5
    elif grade[2] == 'D0':
        score = 1.0
    elif grade[2] == 'F':
        score = 0
    total_son += float(grade[1]) * score
    total_mom += float(grade[1])

print(total_son / total_mom)

코드 풀이과정

  1. 내가 결국 계산해야할 총합 초기값을 total_son, total_mom으로 설정했다. (변수명이 잘 안떠올라 분자 분모를 son, mom으로 지었다. ㅋㅋ)

  2. 과목명-학점-과목평점 순서로 input을 받아서 iterable하게 처리하고, grade 변수에 저장하기.

  3. 과목명은 그냥 쓸데없으니까 버리고, grade1은 숫자로 처리해주고, grade[2] (과목 평점)는 무엇인지에 따라서 score에 따로 입력해줬다.

  4. for문으로 20번 반복! total_son과 total_mom에 차곡차곡 쌓아서 나눠서 출력하면 끝!

시행착오. 깨달음.

type이 string인 소수점 숫자는 float으로 부동 소수점 숫자처리를 해야한다.
grade[2] 구할 때 좀 아쉬웠다. 각각의 grade에 점수가 정해져있기 때문에 list 만들고 index 이용했으면 더 간결했을 것 같다. 무지성 if문 난사가 조금 부끄럽지만 실수 또한 기록의 가치가 있으니까 ^^

아 그리고 이런거 입력 해라는대로 다 하면 시간도 오래걸리고 손꾸락 다뿌아진다. 과목명 가라치고 반복문 횟수 5번정도만 돌려서 결과값 잘 나오는지 확인해보는게 좋다.

소감.

조~금 아쉬웠지만 막힘없이 풀었으니 ok다.

profile
나는 김종언이다.

0개의 댓글