관리 메뉴

cococo-coding

5656번. 비교 연산자 (c++ 풀이) 본문

[BOJ] 코드 모음/C++_learning 문제집

5656번. 비교 연산자 (c++ 풀이)

_dani 2024. 1. 14. 21:35

문제

풀이

1. 피연산자를 a와 b로, 연산자를 oper로 설정한다. 

이때 연산자oper는 string형으로 선언하고, bool형 check 변수도 하나 생성해둔다. 

 

2. while문으로 무한루프를 만들고, oper=="E"인 경우를 if문으로 빼서 break;를 걸어둔다. 

 

이제 연산자 6개에 대한 if문을 이용할 것이다.

if문의 조건으로는 oper=="연산자"를 넣어서 케이스들을 분기했다.

그리고 check변수에 해당 연산이 맞는지 불값으로 1 혹은 0을 넣는다. 

 

케이스에 걸려져서 check 값까지 나왔다면

이제는 check 값을 확인할 차례이다.

 

만약 check값이 1이면 참이므로, true를 출력하도록 string res=true;를 넣고

0이라면 거짓이므로, false가 출력되도록 string res=false; 를 넣는다.

 

3. 이제는 출력형식에 맞추어 출력만 하면 된다. 

처음에 cnt=1로 만들어준 것을 Case 1, Case 2에서 카운팅 변수로 이용하고

위에서 구한 string res값(false or true)를 출력한다.

그리고 cnt를 증가시켜서 다음 케이스는 증가된 값을 출력하도록 한다. 

 

포인트

  • 입력을 getline이 아닌 a,b,oper 각각 받기 -> 그래야 조건들을 분기할 때 편리하다
  • 연산자 6가지 케이스별로 분기할 때 check변수를 생성해서 추후에 check값으로 다시 분기하자.

코드

#include <iostream>
#include <string> //getline함수 쓰기위해
using namespace std;

/*
    1. 각 줄을 입력받는다.
    2. 각 줄의 결과가 true인지 false인지 확인한다.
    3. true false 값을 출력한다.
*/

int main() {
    //1
    int a, b;
    string oper;
    bool check;

    //2
    string res;
    int cnt = 1;

    while (1) {   
        cin >> a >> oper >> b;

        if (oper == "E") break;

        //2-1
        if (oper == ">")  check = (a > b);
        //2-2
        else if (oper == ">=") check = (a >= b);
        //2-3
        else if (oper == "<") check = (a < b); 
        //2-4
        else if (oper == "<=") check = (a <= b);       
        //2-5
        else if (oper == "==")  check = (a == b);        
        //2-6
        else if (oper == "!=")  check = (a != b);        

        //check값 확인해서 true,false 분류하기
        if (check == 1) res = "true";
        else res = "false";

        //3
        cout << "Case " << cnt << ": " << res << endl;
        cnt++;
    }

    return 0;
}