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문을 탈출시키면 된다.
#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문을 탈출하고 실행이 종료된다.