BOJ | 10952번
Python 풀이
import sys
while True:
a, b = map(int,sys.stdin.readline().split())
if a + b == 0 :
break
else : print(a + b)
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';
}
}
#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문을 탈출하고 실행이 종료된다.
Author And Source
이 문제에 관하여(BOJ | 10952번), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@hrpp1300/BOJ-10952번저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)