문제
해석
특정 조건에 따라 정해진 출력을 하는 프로그램입니다. 사용해야 할 구문은 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문에 따라 조건을 포함하고 있는지 안 포함하는지에 대한 생각을 할 수 있게 해 줍니다.
'프로그래밍 > 코딩 테스트 연습' 카테고리의 다른 글
[백준] 14681번 : 사분면 고르기 (2단계) (C++) (1) | 2024.01.08 |
---|---|
[백준] 2753번 : 윤년 (2단계) (C++) (0) | 2024.01.07 |
[백준] 1330번 : 두 수 비교하기 (2단계) (C++) (0) | 2024.01.07 |
[백준] 10172번 : 개 (1단계) (C++) (0) | 2024.01.06 |
[백준] 10171번 : 고양이 (1단계) (C++) (1) | 2024.01.06 |