#include<iostream>
using namespace std;
int main()
{
int A; int B;
while (true)
{
cin >> A >> B;
if (A == 0 && B == 0) break;
else cout << A + B << endl;
}
}
#include<iostream>
using namespace std;
int main()
{
int input;
cin >> input;
for (int i = 1; i <= input; ++i)
{
for (int j = 0; j < i; ++j) cout << "*";
if (i == input) break;
else cout << endl;
}
}
#include<iostream>
using namespace std;
int main()
{
int input; int A; int B;
cin >> input;
for (int i = 1; i <= input; ++i)
{
cin >> A >> B;
cout << "Case #" << i << ": " << A << " + " << B << " = " << A + B << endl;
}
}
#include<iostream>
using namespace std;
int main()
{
int input; int A; int B;
cin >> input;
for (int i = 1; i <= input; ++i)
{
cin >> A >> B;
cout << "Case #" << i << ": " << A + B << endl;
}
}
#include <iostream>
using namespace std;
int main() {
int T, a, b;
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin >> T;
for (int i = 0; i < T; i++)
{
cin >> a >> b;
cout << a + b << "\n";
}
}
풀이
C와 C++과의 표준 스트림 동기화 해제
입력과 출력 연결 해제
endl 대신 \n 쓰기
printf와 scanf를 쓰면 상관없지만 C++로 넘어온 사람이라면 당연히 cout과 cin을 썼을 것이다.
cout(출력) cin(입력)과의 묶인것을 해제시키지 않고, C와 C++과의 입출력 동기화를 해제하지 않으면 이 문제는 틀리게 된다.
기본적으로 C++에서는 C의 표준 스트림이 동기화가 되어있다.
C와 C++가 동일한 버퍼를 공유한다는 말이다.
이러한 동기화는 성능을 저하시키지만 스레드로부터 안전하기 때문에 동기화 상태로 두는 것이 더 좋긴 하다.
하지만 알고리즘 문제풀이 또는 예외처리나 멀티스레드 작업을 필요로 하지 않는 작업에서는 동기화를 끊어주면 속도가 빨라진다.
(C++ 표준 스트림이 독립적으로 IO(intput, output)버퍼링을 할 수 있다는 것이다. 이렇게 되면 상당히 많은 양의 입출력이 있을 경우 동기화되어있는 상태에 비해 성능이 많이 좋아진다.)