문제 설명
점수에 알맞는 알파벳 성적을 출력하는 문제입니다.
입력
0점보다 크거나 같고 100점보다 작거나 같은 정수 N(=시험 점수)에 대해
출력
N에 따른 시험 성적을 X라 하면
풀이
문제의 조건을 보면 90~100은 A, 80~89는 B, 70~79는 C, 60~69는 D, 그 이외의 점수는 F를 주게 되어있습니다. 점수는 0점 이상 100점 이하이므로 구간을 나눠보면
- A: 90점 이상
- B: 위의 범위에 해당되지 않는 범위 중 80점 이상
- C: 위의 모든 범위에 해당되지 않는 범위 중 70점 이상
- D: 위의 모든 범위에 해당되지 않는 범위 중 60점 이상
- F: 위의 모든 범위에 해당되지 않는 범위
이를 코드로 바꿔보면 아래와 같이 됩니다.(C++)
if (N >= 90) { ... }
// ^^^^^^^: 90점 이상
else if (N >= 80) { ... }
// else: 위의 범위에 해당되지 않는 경우...
// ^^^^^^^: 중에서 80점 이상
else if (N >= 70) { ... }
// else: 위의 두 범위에 모두 해당되지 않는 경우...
// ^^^^^^^: 중에서 70점 이상
else if (N >= 60) { ... }
// else: 위의 세 범위에 모두 해당되지 않는 경우...
// ^^^^^^^: 중에서 60점 이상
else { ... }
// else: 위의 네 범위에 모두 해당되지 않는 경우
위와 같이 조건문을 세우고 각 조건문마다 알맞은 알파벳을 출력합니다.
C++
#include <iostream>
using namespace std;
int main() {
int N;
cin >> N;
if (N >= 90)
cout << "A" << endl;
else if (N >= 80)
cout << "B" << endl;
else if (N >= 70)
cout << "C" << endl;
else if (N >= 60)
cout << "D" << endl;
else
cout << "F" << endl;
}
Python 3
N = int(input())
if N >= 90:
print("A")
elif N >= 80:
print("B")
elif N >= 70:
print("C")
elif N >= 60:
print("D")
else:
print("F")
다른 풀이(switch)
위의 정석 풀이와 같이 if-else if 형식을 사용해도 되지만 점수/10
값에 대해 switch 형식의 조건문을 이용하는 방법도 있습니다. 위의 풀이와 마찬가지로 경우를 나누되, 점수를 10으로 나눈 몫을 기준으로 나누면 아래와 같이 됩니다.
점수 / 10 |
점수 범위 |
성적 |
10 |
100 |
A |
9 |
90~99 |
A |
8 |
80~89 |
B |
7 |
70~79 |
C |
6 |
60~69 |
D |
0~5 |
0~59 |
F |
이렇게 정수값으로 범위가 나뉘는 특별한 경우는 switch
문을 사용할 수 있습니다. switch가 if-else보다 메모리는 더 먹는 대신 약간 더 빠릅니다사실 잘 모릅니다. 아무튼 이를 이용해서도 코드를 짤 수 있습니다.
C++
#include <iostream>
using namespace std;
int main() {
int N;
cin >> N;
switch(N / 10) {
case 10:
case 9:
cout << "A" << endl;
break;
case 8:
cout << "B" << endl;
break;
case 7:
cout << "C" << endl;
break;
case 6:
cout << "D" << endl
break;
default:
cout << "F" << endl;
}
}