ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • and 기호, or 기호, and&or 혼합
    데일리 codeup/조건문 2022. 7. 2. 17:40

    and 기호


    2개 이상의 조건을 동시에 만족하는지를 알고싶은 경우라면, 다음과 같이 && (and) 를 사용하면 된다

    if (조건1 && 조건2) {
    
        코드1
    
    }

    3개의 조건을 모두 만족시키는지에 대한 여부 역시 and를 2번 사용하여 표현할 수 있다. 조건이 더 많아도 된다.

    if (조건1 && 조건2 && 조건3) {
    
        코드1
    
    }

    점수 비교

    A와 B의 수학과 영어의 점수를 입력받아 누가 더 높은지 비교하는 프로그램을 작성해주세요.

    #include <iostream>
    using namespace std;
    int main(){
        int a1,a2,b1,b2;
        cin >> a1 >> a2 >> b1 >> b2;
        if ((a1 > b1) && (a2 > b2)) cout << 1;
        else    cout << 0;
        return 0;
    }

    범위 내 숫자인지 판별

    숫자 a가 2 이상 10 이하 라는 조건은 어떻게 넣을 수 있을까?

    2개 이상의 조건을 동시에 만족하는지를 알고 싶은 경우이므로 && (and) 를 사용해볼 수 있다.

    if (2 <= a && a <= 10) {
    
       코드1
    
    }

    범위 안의 수

    정수 a를 입력 받아 a가 10이상 20 이하인 수인지를 판단하는 프로그램을 작성해보세요.

    #include <iostream>
    using namespace std;
    int main(){
        int a;
        cin >> a;
        if (10 <= a && a <= 20) cout<<"yes";
        else cout<<"no";
        return 0;
    }

    시력검사

    양쪽눈의 시력을 실수(real number)로 입력받아 모두 1.0 이상이면 High, 모두 0.5 이상이면 Middle, 아니면 Low라고 출력하는 프로그램을 작성해주세요.

    #include <iostream>
    using namespace std;
    int main(){
        double n,m;
        cin >> n >> m;
        if (n >= 1.0 and m >= 1.0)   cout<<"High";
        else if(n >= 0.5 && m >= 0.5) cout<<"Middle";
        else   cout<<"Low";
        return 0;
    }

    특정 조건 세 정수 비교

    3개의 정수를 입력 받아 첫 번째 수가 가장 작으면 1 아니면 0을 출력하고, 세 개의 수가 모두 같으면 1 아니면 0 을 출력하는 프로그램을 작성해주세요.

    #include <iostream>
    using namespace std;
    int main(){
        double a,b, c;
        cin >> a >> b >> c;
        cout << ((a<=b && a<=c) ? "1 ": "0 ");
        cout << ((a == b && b == c) ? 1 : 0);
        return 0;
    }

    가장 작다는 의미가 최솟값인지 여부기 때문에 같다를 붙여야 한다.


    세 정수의 최솟값

    3개의 정수를 입력받아 조건연산자를 이용하여 입력받은 수 중 최솟값을 출력하는 프로그램을 작성해주세요.

    #include <iostream>
    using namespace std;
    int main(){
        int  a, b, c, tmp;
        cin >> a >> b >> c;
        tmp = (a < b)? a : b;
        cout <<  (c < tmp ? c: tmp);
        return 0;
    }

    세 수의 중간값

    세 수 a, b, c의 값이 주어졌을 때, b가 a보다 크고 c보다 작다면 1을, 그렇지 않다면 0을 출력하는 프로그램을 작성해보세요.

    #include <iostream>
    using namespace std;
    int main(){
        int  a, b, c;
        cin >> a >> b >> c;
        if (a < b && b < c) cout<<1;
        else cout<<0;
        return 0;
    }

    or 기호


    2개 이상의 조건들 중 하나라도 만족하는지를 알고싶은 경우라면, 다음과 같이 || (or) 를 사용하면 된다.

    if ( 조건1 || 조건2 ) {
    
        코드1
    
    }

    3개의 조건 중 하나라도 만족하는지에 대한 여부 역시 || 를 2번 사용하여 표현할 수 있다. 조건이 더 많아도 된다.

    if ( 조건1 || 조건2 || 조건3 ) {
    
        코드1
    
    }

    범위 밖의 수

    정수 a를 입력받아 a가 10보다 작거나 20보다 큰 수인지를 판단하는 프로그램을 작성해보세요.

    #include<iostream>
    using namespace std;
    int main(){
        int a;
        cin >> a;
        if(a<10 || a>20)    cout<<"yes";
        else    cout<<"no";
        return 0;
    }

    숫자의 조건 여부 3

    정수 a를 입력받았을 때 13의 배수이거나 19의 배수인 경우는 True, 그 외의 경우는 False를 출력하는 프로그램을 작성해주세요.

    #include<iostream>
    using namespace std;
    int main(){
        int a;
        cin >> a;
        if(a%13 == 0 || a%19 == 0)  cout<<"True";
        else cout<<"False";
        return 0;
    }

    둘 중 하나의 배수

    정수 a가 주어졌을 때, a가 3의 배수이거나 5의 배수인 경우에는 1을, 그렇지 않다면 0을 출력하는 프로그램을 작성해보세요.

    #include<iostream>
    using namespace std;
    int main(){
        int a;
        cin >> a;
        if(a%3 == 0 || a%5 == 0)    cout << 1;
        else cout << 0;
        return 0;
    }

    and, or 혼합


    숫자 a가 짝수거나 혹은 홀수이면서 동시에 10보다 크다면 이라는 조건은 어떻게 넣을 수 있을까?

    1. a % 2 == 0
    2. a % 2 == 1 && a >= 10
    if ( a % 2 == 0 || (a % 2 == 1 && a >= 10) ) {
        코드1
    }

    and, or 연산자 우선순위

    if (a % 2 == 0 || a % 5 == 0 && a % 7 == 0) {
        코드1
    }

    and는 or 보다 연산자 우선순위가 높기 때문에, 먼저 식을 계산하게 된다.


    굉장한 숫자

    자연수 n을 입력받아 n이 굉장한 숫자인지 판단하는 프로그램을 작성해보세요.

    굉장한 숫자이기 위해서는 다음 두 조건 중 하나를 만족해야 합니다.

    • 홀수이면서 3의 배수인 수
    • 짝수이면서 5의 배수인 수
    #include<iostream>
    using namespace std;
    int main(){
        int n;
        cin >> n;
        if(n%2==1 && n%3 == 0||n%2==0 && n%5==0)    cout<<"true";
        else    cout<<"false";
        return 0;
    }

    if 조건 나열 순서의 중요성

    1. a가 홀수면서 5보다 작으면 A를 출력합니다.
    2. a가 홀수면서 5보다 같거나 크면 B를 출력합니다.
    3. a가 짝수면 C를 출력합니다.

    이 문제를 주어진 순서 그대로 코드를 작성해보면 다음과 같다.

        if (a % 2 == 1 && a < 5) {
            cout << "A" << endl;
        }
        if (a % 2 == 1 && a >= 5) {
            cout << "B" << endl;
        }
        if (a % 2 == 0) {
            cout << "C" << endl;
        }
    

    하지만 조건을 3, 1, 2 순으로 처리한다 생각하면 다음과 같이 코드를 간결하고 깔끔하게 작성할 수 있다.

    
        if (a % 2 == 0) {
            cout << "C" << endl;
        }
        else if (a < 5) {
            cout << "A" << endl;
        }
        else {
            cout << "B" << endl;
        }

    이렇듯 조건을 어떤 순서로 나열하는지에 따라 코드의 복잡도가 달라진다.


    숫자의 계절은

    몇 월인지를 입력받아, 어떤 계절인지를 출력하는 프로그램을 작성해보세요.

    35월이 봄, 68월이 여름, 911월이 가을, 122월이 겨울이라 가정합니다.

    #include<iostream>
    using namespace std;
    int main(){
        int m;
        cin >> m;
        if(3<=m && m<6)    cout<<"Spring";
        else if(6<=m && m<9)    cout<<"Summer";
        else if(9<=m && m<12)    cout<<"Fall";
        else    cout<<"Winter";
        return 0;
    }

    장학금

    중간고사를 90점 이상 받은 자들로 한해서, 기말고사 점수에 따라 장학금을 지급하기로 했습니다. 기말고사 점수가 100점 만점에 95점 이상은 10만 원, 90점 이상은 5만 원, 그 미만 점수는 받지 못합니다. 중간, 기말고사 점수를 입력했을 때 받을 수 있는 장학금을 출력하는 프로그램을 작성해주세요.

    #include<iostream>
    using namespace std;
    int main(){
        int a,b;
        cin >> a >> b;
        if (a>=90){
            if (b>=95)  cout<<100000;
            else if(b>=90)  cout<<50000;
            else cout<<0;
        }
        else cout<<0;
        return 0;
    }

    좀 더 어려운 수학 점수

    이번 중간고사에는 영어보다 수학이 특별히 더 어려웠습니다. 학생 A와 B가 서로의 점수를 가지고 우선순위를 나누려고 합니다. 영어 점수와 상관없이 수학 점수가 높다면 더 높은 학생의 이름을 출력하고, 만약 수학 점수가 같다면 영어 점수가 더 높은 학생의 이름을 출력하려고 합니다. 두 학생의 수학 점수와 영어 점수가 주어질 때, 위의 조건을 만족하는 학생의 이름을 출력하는 프로그램을 작성해보세요. (단, 수학 점수와 영어 점수가 둘 다 동일하게 주어지는 경우는 없다고 생각해도 좋습니다.)

    #include<iostream>
    using namespace std;
    int main(){
        int m1,e1,m2,e2;
        cin >> m1 >> e1 >> m2 >> e2;
        cout << (m1 == m2 ? (e1 > e2 ? "A" : "B") : (m1 > m2 ? "A" : "B"));
        return 0;
    }

    두 사람

    두 사람에 대한 정보로 나이와 성별이 주어집니다. 두 사람 중 한 사람이라도 19세이상이면서 남자라면 1을 출력하는 프로그램을 작성해보세요.

    #include<iostream>
    using namespace std;
    int main(){
        int o1,o2;
        char j1,j2;
        cin >> o1 >> j1 >> o2 >> j2;
        if(o1>18 && j1 == 'M' || o2>18 && j2 == 'M')    cout << 1;
        else cout<<0;
        return 0;
    }

    j1, j2는 문자type char을 이용했기 대문에 "가 아닌 '을 이용해야 한다


    '데일리 codeup > 조건문' 카테고리의 다른 글

    중첩 조건문_220702  (0) 2022.07.02
    비교 연산자와 조건문_220702  (0) 2022.07.02
    if else / if else_220702  (0) 2022.07.02
    if / else if / else 조건문_220702  (0) 2022.07.02
    삼항 연산자_220702  (0) 2022.07.02

    댓글

Designed by Tistory.