문제 : 시험 성적(9498번)(Bronze V)
문제 링크 : https://www.acmicpc.net/problem/9498
출처 : Baekjoon Online Judge
문제 내용을 잘 읽어보면 조건을 다음과 같이 정리할 수 있어요.
조건 1 : 90점 이상 100점 이하 -> A
조건 2 : 80점 이상 90점 미만 -> B
조건 3 : 70점 이상 80점 미만 -> C
조건 4 : 60점 이상 70점 미만 -> D
조건 5 : 60점 미만 -> F
저번 문제에서 조건이 좀 더 많아진 문제입니다.
이것을 C++로 구현하면 다음과 같습니다.
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int score;
cin >> score;
if(90 <= score && score <= 100) {
cout << "A";
} else if(80 <= score && score < 90) {
cout << "B";
} else if(70 <= score && score < 80) {
cout << "C";
} else if(60 <= score && score < 70) {
cout << "D";
} else {
cout << "F";
}
return 0;
}
하지만 여기서 이 문제를 다르게 풀 수 있습니다.
if문 대신 switch문으로 변환할 수 있습니다.
점수에서 10을 나누면 100점은 10, 90~99는 9, 80~89는 8, ...이 나오게 됩니다.
switch 조건은 score / 10으로 하고 각 케이스는 10, 9, 8, 7, 6으로 하여 각각 출력하는 방식으로 구현할 수 있습니다.
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int score;
cin >> score;
switch(score/10) {
case 10:
cout << "A";
break;
case 9:
cout << "A";
break;
case 8:
cout << "B";
break;
case 7:
cout << "C" ;
break;
case 6:
cout << "D";
break;
default:
cout << "F";
break;
}
return 0;
}
default는 그 외의 경우가 나온 경우 처리하는 케이스입니다.
switch문은 불연속적인 구간에서 더 빠르게 처리하는 장점이 존재하므로 이럴 때 switch문으로 해결할 수 있습니다.
그러면 같은 방식으로 Python에서는 어떻게 처리할까요?
Python에서는 switch문을 사용할 수 없습니다.
그러므로 Python에서는 if, elif, else로 구현할 수 있습니다.
import sys
input = sys.stdin.readline
score:int = int(input().rstrip())
CASE:int = score // 10
if CASE == 9 or CASE == 10 :
print("A")
elif CASE == 8 :
print("B")
elif CASE == 7 :
print("C")
elif CASE == 6 :
print("D")
else :
print("F")
'(구) solved ac class 문제들 > class 1' 카테고리의 다른 글
| [class 1]백준 개(10172번) 풀이 (C++/Python) (0) | 2026.02.09 |
|---|---|
| [class 1]백준 고양이(10171번) 풀이 (C++/Python) (0) | 2026.02.09 |
| [class 1]백준 윤년(2753번) 풀이 (C++/Python) (0) | 2026.02.07 |
| [class 1]백준 N 찍기(2741번) (C++/Python) (0) | 2026.02.06 |
| [class 1]백준 구구단(2739번) 풀이 (C++/Python) (0) | 2026.02.06 |