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

적당히 조건을 나눠서 구현하는게 더 효율적일줄 알고.. 아래처럼 짜버렸다..
score = list(input())
if score[0] == "A":
gpa = 4.3
elif score[0] == "B":
gpa = 3.3
elif score[0] == "C":
gpa = 2.3
elif score[0] == "D":
gpa = 1.3
else:
gpa = 0.0
if score[1] == "0":
gpa -= 0.3
elif score[1] == "-":
gpa -= 0.6
print(gpa)
조건문을 쓰면 쓸수록 시간복잡도가 올라간다.
이 문제처럼 특정 값과 값이 대응되는 케이스의 경우 딕셔너리를 사용하면 O(1)으로 빠르게 찾을 수 있다!
(*리스트에서는 linear search를 사용해 처음부터 끝까지 비교하지만, 딕셔너리에서는 해시테이블을 이용해 키로 직접 접근이 가능하기 때문이다.)
score = input()
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
}
print(dict[score])