BOJ_2754 학점계
- TOC {:toc}
이 글은 백준 온라인 저지의 2754번 문제를 파이썬(Python)으로 풀이한 것을 모아놓은 글입니다.
일종의 연습 기록이며 제가 정답을 받은 코드와 참고할만한 다른 코드를 같이 기록합니다. 필요한 경우 코드에 대한 해설을 기록합니다만 코드는 통과했어도 해설은 틀릴 수 있기 때문에 가볍게 참고해주시길 부탁드립니다. 피드백은 편하신 방법으로 자유롭게 주시면 감사하겠습니다.
2021.03.26
메모리 | 시간 | 코드 길이 |
---|---|---|
28776 KB | 68 ms | 171 B |
g = input()
if g == "F":
print("0.0")
else:
if g[1] == "0":
f = 0
else:
f = float(g[1] + "0.3")
print("{:.1f}".format(69 - ord(g[0]) + f))
아이디어 & 풀이
등급을 ASCII 값으로 치환해서 계산해 등급에 따라 점수의 일의자리를 구한다.
+
면+ 0.3
,-
면- 0.3
이 되도록 한 뒤 이를 위의 값에 더해준다.0
은 동일한 방법으로0.0
이 도출되게 할 수가 없어 경우를 따로 나눠주었다.- 이 부분을 조금 더 똑똑하게 하는 방법이 있을 것 같은데 잘 떠오르지 않는다.
피드백
- 숫자로 치환해서 빼는 것보다 인덱스를 이용하는 게 나은 것 같다.
참고 답안 1
g = input()
grade = {
"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(grade[g])
참고 답안 2
# F를 다른 학점과 동일한 꼴로 만들어 주기 위해 "0"을 붙여준다.
# F 외의 학점에는 영향을 미치지 않는다.
v = input() + "0"
# "FDCBA".index(v[0]):
# F ~ A까지 각각 index 0 ~ 4의 위치에 있기 때문에
# 각 문자의 index 값을 받으면 학점의 앞자리를 구할 수 있다.
# [-0.3, 0, 0.3]["-0+".index(v[1])]
# 위와 동일한 방법을 이용해서
# - : -0.3, 0 : 0, + : 0.3에 대응시킨다.
print("%.1f" % ("FDCBA".index(v[0]) + [-0.3, 0, 0.3]["-0+".index(v[1])]))
-
ps-python