관리 메뉴

솜씨좋은장씨

[BaekJoon] 2755번 : 이번학기 평점은 몇점? (Python) 본문

Programming/코딩 1일 1문제

[BaekJoon] 2755번 : 이번학기 평점은 몇점? (Python)

솜씨좋은장씨 2021. 8. 22. 13:37
728x90
반응형

코딩 1일 1문제! 오늘의 문제는 백준의 이번학기 평점은 몇점? 입니다.

 

2755번: 이번학기 평점은 몇점?

첫째 줄에, 백준이가 이번 학기에 들은 과목 수가 주어진다. 둘째 줄부터 N개의 줄에 각 과목의 과목명, 학점, 성적이 주어진다. 과목명은 알파벳 소문자와 숫자, 그리고 밑줄 (_)로만 이루어져 있

www.acmicpc.net

Solution

def this_year_avg_score(grade_info):
    credit_dict = {"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}

    sum_score, div_num = 0, 0
    for info in grade_info:
        subject, grade, score = info.split()
        
        sum_score += int(grade) * credit_dict[score]
        div_num += int(grade)
    
    avg_score = sum_score / div_num
    
    result = avg_score * 1000
    if result % 10 > 4:
        result += (10 - result % 10)
    result = result / 1000
    
    return f"{result:.2f}"   

if __name__ == "__main__":
    report = []
    for _ in range(int(input())):
        grade_info = input()
        report.append(grade_info)
        
    print(this_year_avg_score(report))

Solution 풀이

입력받은 성적 정보를 활용해서 내 평균 평점을 소수점 3번째 자리에서 반올림해주는 문제입니다.

이 문제의 함정카드는 바로 저 소수점 3번째 자리에서 반올림에 있었습니다.

2021.08.22 - [Programming/Python] - [Python] round 함수 사용 시 주의 사항!

 

기존의 round 함수를 활용하여 문제를 풀려고 하니 반올림한 결과가 제대로 나오지 않아서

직접 반올림하는 식을 만들어 문제를 풀어보았습니다.

 

먼저 각 성적을 한줄씩 입력 받아서 이를 함수로 넘겨주면

함수에서는 각 성적 문자열을 split( ) 하여 

과목, 학점, 성적으로 나누고 

학점은 학점대로 따로 더하여 총학점을 구하고

성적은 성적대로 credit_dict에서 꺼내서 더해서 총 점수를 구한다음

 

마지막에 총 점수 / 총 학점 계산한 값을 

직접 만든 식을 활용하여 소수점 세번째 자리에서 반올림해주면 됩니다.

 

 

GitHub - SOMJANG/CODINGTEST_PRACTICE: 1일 1문제 since 2020.02.07

1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub.

github.com

 

Comments