[백준] 10952번 A+B - 5 C++ 문제 풀이 while문

2019. 7. 16. 08:39알고리즘/백준

728x90
반응형

문제

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

입력

입력은 여러 개의 테스트 케이스로 이루어져 있다.

각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)

입력의 마지막에는 0 두 개가 들어온다.

출력

각 테스트 케이스마다 A+B를 출력한다.


예제 입력 1

1 1

2 3

3 4

9 8

5 2

0 0


예제 출력 1

2

5

7

17

7


문제 풀이

#include <iostream>
using namespace std;
int main(void){
    int a, b;
    
    while(1){
        cin>>a>>b;
        if(a!=0 || b!=0)
            cout<<a+b<<endl;
        else
            break;
    }
}

a와 b의 조건만 검사하면 바로 풀리는 쉬운 문제입니다.

a와 b가 둘 다 0일 때 반복이 끝나므로

a+b == 0, a*b == 0

이런 조건을 세울 수 있지만

a, b가 정수이고 둘 다 0이어야 하므로 위의 두 조건은 성립하지 않습니다.

a == 0 && b == 0

 을 써야 한다는 얘기인데 반대로 

a != 0 || b != 0

a != 0 || b != 0

이걸 써도 위와 같은 의미이므로 전혀 문제가 없겠죠? 다만 차이점은 &&연산자는 좌항이 false이면 우항  연산을 하지 않는다는 것과 ||연산자는 좌항이 true이면 우항 연산을 하지 않는다는 것입니다.

 

이번 문제에 입력에 대해 살펴보면 0이 아닌 값과 0인 값 중에 0이 아닌 값이 더 많이 들어올 확률이 크므로 조건문을

a == 0 && b == 0

으로 바꾸면 연산이 조금 덜 들어가는 코드가 되겠네요..

 

출처 : https://www.acmicpc.net/problem/10952

 

10952번: A+B - 5

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

www.acmicpc.net

 

728x90
반응형