프로그래밍/코딩 테스트 연습

[백준] 9498번 : 시험 성적 (2단계) (C++)

w_w 2024. 1. 7. 13:22
 

9498번: 시험 성적

시험 점수를 입력받아 90 ~ 100점은 A, 80 ~ 89점은 B, 70 ~ 79점은 C, 60 ~ 69점은 D, 나머지 점수는 F를 출력하는 프로그램을 작성하시오.

www.acmicpc.net

 


 

문제

 

 

 


 

해석

 

특정 조건에 따라 정해진 출력을 하는 프로그램입니다. 사용해야 할 구문은 switch나 if 문을 떠올릴 수 있으나 점수의 특정값이 아니라 범위가 주어졌기 때문에 switch 보다는 if 구문이 다루기 쉬울 겁니다.

 

 

 

 

 

 

풀이

 

값을 입력받아 해당하는 값이 어딘가에 속하는지 판단하고, 속한 범위에 따라 출력되는 값을 다르게 표현하는 건 if ~ else의 기초 구문입니다.

 

아래 코드에서 하나의 값만 출력하며 줄 바꿈을 하라는 조건은 없으므로 endl; 조작자는 제거해도 됩니다.

#include<iostream>
using namespace std;

int main(){
    int x;
    cin >> x;
    if(x>=90)
        cout << "A" << endl;
    else if(x>=80)
        cout << "B" << endl;
    else if(x>=70)
        cout << "C" << endl;
    else if(x>=60)
        cout << "D" << endl;
    else
        cout << "F" << endl;
}

 

프로그래밍을 처음 한다면 중간의 조건을 다음과 같이 하는 경우가 있는데요.

if( x <= 90 && x >= 80 )

 

물론 위와 같이 코딩해도 다른 게 출력된다든지, 코딩의 효율성을 저하한다든지, 가독성을 해친다는 문제는 없지만, 쓸데없는 조건을 쓴 코드가 돼버립니다.

 

이유는 else if(x>=80) 문장은 위의 if 조건을 만족하지 않은 경우, 즉 x >= 90 이 거짓인 x < 90만을 만족하는 수들이 else if(x>=80) 문으로 들어가기 때문에 && 같은 연산자는 사용하지 않아도 됩니다.

 

switch문 또한 if ~ else문을 대체할 수 있지만 범위에 따라 모든 값들을 써줘야 하기 때문에 코드를 더욱 많이 작성해야 한다는 단점이 있습니다.

 

switch (x){
    case 100:
    case 99:
    ...
    case 90:
    printf("A");
    break;
    ...
}

 


 

정리

 

특정 조건의 범위에 따라 출력이 바뀌는 if ~ else 구문의 기초 문제입니다.

 

if ~ else문을 통해 if문에 따라 조건을 포함하고 있는지 안 포함하는지에 대한 생각을 할 수 있게 해 줍니다.