728x90
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
풀이
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
구간이 정해져 있고 성적을 입력하면 점수가 나와야 한다.
13개인데 if문으로 조졌다.......
0.3씩 줄어드는 걸로 해보고 싶었는데 그러기엔 또 -에서 다음 알파벳 +로 가는데에는 0.4씩 차이가 난다.
내가 생각한 방식으로 어떻게 구현할 수 없는지 질문을 남겨두긴 했고,
다른 사람들 코드를 봤는데 다 비슷한 형태 + 한 줄로 때려 박은 코드가 있어서 그걸 참고해보긴 했다.
코드
X = input()
if X == 'A+' :
print(4.3)
elif X == 'A0' :
print(4.0)
elif X == 'A-' :
print(3.7)
elif X == 'B+' :
print(3.3)
elif X == 'B0' :
print(3.0)
elif X == 'B-' :
print(2.7)
elif X == 'C+' :
print(2.3)
elif X == 'C0' :
print(2.0)
elif X == 'C-' :
print(1.7)
elif X == 'D+' :
print(1.3)
elif X == 'D0' :
print(1.0)
elif X == 'D-' :
print(0.7)
elif X == 'F' :
print(0.0)
무려 27줄... 하면서도 이게 맞냐 싶었다... ^_ㅠ
score = {'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}
print(score[input()])
이렇게 {} 안에 성적과 점수를 매치해둔다.
이거 코딩도장에서 배운 딕셔너리 같은데 딕셔너리부터 못 알아듣겠어서 재꼈더니... 이런 대참사가...
복습이 필요하다...
728x90
'🥧 Python > ⚙️ 코딩테스트' 카테고리의 다른 글
[백준-Python] 7567번: 그릇 (0) | 2023.02.23 |
---|---|
[백준-Python] 2884번: 알람 시계 (0) | 2023.02.18 |
[백준-Python] 3009번: 네 번째 점 (3) | 2023.02.16 |
[백준-Python] 10156번: 과자 (0) | 2023.02.16 |
[백준-Python] 4101번: 크냐? (0) | 2023.02.15 |