새소식

⌨️ Algorithms/백준

[Python] 백준 2754번_학점계산

2023. 3. 15. 22:57

  • -

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

 

2754번: 학점계산

어떤 사람의 C언어 성적이 주어졌을 때, 평점은 몇 점인지 출력하는 프로그램을 작성하시오. 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

www.acmicpc.net

 

  • 어떤 사람의 C언어 성적이 주어졌을 때, 평점은 몇 점인지 출력하기
  • 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
  • 입력
    • 첫째 줄에 C언어 성적이 주어짐
    • 성적은 문제에서 설명한 13가지 중 하나
  • 출력
    • 첫째 줄에 C언어 평점을 출력
  • 시간 제한: 1초
  • 메모리 제한: 128 MB

 

"""
입출력 예시)

A0 -> 4.0
"""

 

 

## 의사코드 ##

# 성적의 앞글자와 뒷글자, 평점의 앞글자와 뒷글자로 나눠서 보기

# + -> .3
# 0 -> .0
# - -> .7

# A ~ D -> 4 ~ 1
# F = 0.0

 

 

 

 

grade = input()
score = 4.3 # 만점에서 시작

for i in range(2):
    # 성적의 앞글자
    if i == 0:
        if grade[i] == 'A':
            score = score
        elif grade[0] == 'B':
            score -= 1.0
        elif grade[i] == 'C':
            score -= 2.0
        elif grade[i] == 'D':
            score -= 3.0
        # F인 경우, 평점은 0.0
        else:
            score = 0.0
            break
    # 성적의 뒷글자
    else:
        if grade[i] == '0':
            score -= 0.3
        elif grade[i] == '-':
            score -= 0.6

# 소수 두 번째 자리에서 반올림
print(round(score, 1))

 

성적을 key, 평점을 value로 해서 모든 성적에 대한 평점 값을 딕셔너리로 생성해서 풀면 더 쉽게 풀었을 수도 있지만

딕셔너리에 그냥 값을 하나하나 다 입력하는 것보다 규칙을 찾아서 평점을 직접 계산하도록 구현해 봤다. 

 

마지막에 정답을 출력할 때, 소수 두 번째 자리에서 반올림하지 않으면 다른 값이 나와서 꼭 반올림해줘야 한다!

 

 

 

 

 

 

https://jsikim1.tistory.com/223

 

Python 반올림(round), 올림(ceil), 내림(floor), 소수점 버림(trunc) 하는 방법

Python 반올림(round), 올림(ceil), 내림(floor), 소수점 버림(trunc) 하는 방법 Python 에서 반올림, 올림, 내림, 소수점 버림 하는 방법을 알려드리도록 하겠습니다. 목차 올림 하는 방법 - math.ceil() 내림 하

jsikim1.tistory.com

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다!