백준 09498번 / 9498번 문제 링크
문제 이름 : 시험 성적
주 언어 : Python
태그 : 구현
solved.ac 등급 : Bronze V (2023/01/15 확인)
문제 보기
문제 :
시험 점수를 입력받아 90 ~ 100점은 A, 80 ~ 89점은 B, 70 ~ 79점은 C, 60 ~ 69점은 D, 나머지 점수는 F를 출력하는 프로그램을 작성하시오.
입력 :
첫째 줄에 시험 점수가 주어진다. 시험 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.
출력 :
시험 성적을 출력한다.
단순한 조건문 문제로 우선은 볼 수 있습니다.
파이썬에서는
if (A1) : print(A2)
elif (B1) : print(B2)
elif (C1) : print(C2)
else: print(D2)
같은 형식으로 elif를 쭉 늘어쓰면서 A1이면 A2를 하고, A1이 아니면서 B1이면 B2를 하고, A1도 아니고 B1도 아니고 C1이면 C2를 하고...를 쭉 늘릴 수 있습니다.
시험 성적이 A이면서 B일 수는 없으므로, if - elif - else문 사용이 적절해보입니다.
score = int(input())으로 입력받은 문자열을 정수로 바꿔준 후, if문을 사용해줍니다.
나는 if문 도배해가면서 풀기가 귀찮다 라고 하시는 분이 있을 수 있는데, 코딩할 때는 몸이 힘들고 머리가 편하거나 머리가 힘들고 몸이 편해야 합니다. (물론 일반적으론 둘 다 힘듭니다.)
A의 범위, B의 범위, C의 범위를 음미하고 있다보면, 100점부터 99점, 98점, 97점...90점 까지는 A이고, 또 89점부터 88점, 87점...80점 까지는 B라는 것을 알 수 있습니다.
일의 자리를 거르고 그 앞자리가 10이거나 9이면 A이고, 8이면 B이고, 7이면 C이고, 6이면 D이고, 그 외에는 F라는 것을 알 수 있습니다.
즉, 점수를 10으로 나눈 몫만 봐도 충분한 셈입니다.
리스트를 만들어서, 0번부터 5번까지는 "F"가 있고, 6번에는 "D"가 있고, 7번에는 "C"가 있고, 8번에는 "B"가 있고, 9번과 10번에는 "A"가 있는 모습을 떠올릴 수 있습니다.
그리고 입력받은 점수를 10으로 나눈 몫을 $N$이라 하면, 리스트의 $N$번째 원소를 출력해도 답이 되는 셈입니다.
이마저도 "F"도 여러번 쓰기 귀찮고, "," 쉼표도 여러번 쓰기 귀찮다면 파이썬에서의 문자열 기능을 사용하면 됩니다.
파이썬에서 "ABCDEFG"[0] == "A", "ABCDEFG"[6] == "G" 같은 형식으로 사용할 수 있습니다.
그리고 Score 변수도 여러번 사용하는게 아니니 쓰기 귀찮다면, 지워버리고 int(input())만 남겨버릴 수 있습니다.
문자열이 이렇게 자유롭지 못한 다른 언어에서는 두번째 방법인 리스트로 만드는 방법이 그나마 최선이라고 할 수 있습니다.
이 문제는 solved.ac Class 1 에 수록된 문제입니다.
다른 문제도 같이 풀어보시는걸 추천드립니다.
Class 1 문제 모음