⌨️ Algorithms/백준
[Python] 백준 2754번_학점계산
monzheld
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