Notice
Recent Posts
Recent Comments
Link
관리 메뉴

윤일무이

[백준-Python] 2754번: 학점계산 본문

🥧 Python/⚙️ 코딩테스트

[백준-Python] 2754번: 학점계산

썸머몽 2023. 2. 16. 01:01
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