BOJ | 10952번

Python 풀이

import sys

while True:
    a, b = map(int,sys.stdin.readline().split())
    if a + b == 0 :
        break
    else : print(a + b)

입력에서 A, B는 0보다 크고 10보다 작은 정수이므로 합이 0이 되는 경우는 없다. 따라서 a = 0, b = 0일 경우 합이 0이므로 break를 걸어서 while문을 탈출시키면 된다.

C++ 풀이

#include <iostream>

using namespace std;

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    while (true) {
    	int A, B;
    	cin >> A >> B;
    	if (!(A+B)) break;
    	cout << A + B << '\n';
    }
}

if (!(A+B)) break; 이 부분은 전에도 설명한 적이 있는데, if문의 조건부 부분은 참(true)인지 거짓(false)인지 판단을 하고서 다음 문장을 실행할지 안할지 결정을 하게 된다. if문에서 조건에 달랑 숫자 한개가 있을 때 if문은 그 숫자가 0이면 false, 0이 아니면 true라고 인식한다.

따라서 if (5)라고 한다면 0이 아니기 때문에 true로 인식한 후 조건문을 실행시킨다. 위에 코드에서도 보면 if (!(A+B)) 는 A+B가 0이 아닌 숫자면(예를 들어 7) 앞에 !를 붙였기 때문에 그것을 부정한다는 뜻이다.

즉, 7이 입력으로 들어왔기에 true를 반환하고 조건문을 실행하지만 true의 부정이므로 false가 돼서 조건문을 실행하지 않게된다.

만약 A+B가 0이라면? if (0)이므로 if (false)와 같은 것인데, false의 부정인 true가 되므로 조건문을 실행시킨다.

정리하자면 A+B가 0이라면(A = 0, B = 0)이라면 while문을 탈출하고 실행이 종료된다.

좋은 웹페이지 즐겨찾기