no image
[C++] 백준 3단계 - 10952번 문제
문제설명 소스코드 #include using namespace std; int main() { int A; int B; while (true) { cin >> A >> B; if (A == 0 && B == 0) break; else cout
2023.03.27
no image
[C++] 백준 3단계 - 2439번 문제
문제설명 소스코드 코드1 #include using namespace std; int main() { int input; cin >> input; for (int i = 1; i
2023.03.27
no image
[C++] 백준 3단계 - 2438번 문제
문제설명 소스코드 #include using namespace std; int main() { int input; cin >> input; for (int i = 1; i
2023.03.27
no image
[C++] 백준 3단계 - 11022번 문제
문제설명 소스코드 #include using namespace std; int main() { int input; int A; int B; cin >> input; for (int i = 1; i > A >> B; cout
2023.03.26
no image
[C++] 백준 3단계 - 11021번 문제
문제설명 소스코드 #include using namespace std; int main() { int input; int A; int B; cin >> input; for (int i = 1; i > A >> B; cout
2023.03.26
no image
[C++] 백준 3단계 - 15552번 문제
문제설명 소스코드 #include 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 > a >> b; cout
2023.03.26
no image
[C++] 백준 3단계 - 25314번 문제
문제설명 소스코드 #include using namespace std; int main() { int input; cin >> input; for (int i = 0; i < input / 4; ++i) { cout
2023.03.23
no image
[C++] 백준 3단계 - 25304번 문제
문제설명 소스코드 #include using namespace std; int main() { int input; int input2; cin >> input >> input2; int sub = input; int tmp = input2; for (int i = 0; i > input >> input2; sub -= input * input2; } if (sub == 0) cout
2023.03.22

문제설명

 

소스코드

#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;
	}
}

문제설명

 

소스코드

코드1

#include<iostream>
using namespace std;
int main()
{
	int input;
	cin >> input;
	for (int i = 1; i <= input; ++i)
	{
		for (int j = 1; j <= input; ++j)
		{
			if (input - j < i) cout << "*";
			else cout << " ";
		}
		cout << endl;
	}
}

 

코드2

#include<iostream>
using namespace std;
int main()
{
	int input;
	cin >> input;
	for (int i = 1; i <= input; ++i)
	{
		for (int j = 1; j <= input -i; ++j) cout << " ";
		for (int j = 1; j <= i; ++j) cout << "*";
		cout << 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";
	}
}

 

풀이

  1. C와 C++과의 표준 스트림 동기화 해제
  2. 입력과 출력 연결 해제
  3. endl 대신 \n 쓰기

 

printf와 scanf를 쓰면 상관없지만 C++로 넘어온 사람이라면 당연히 cout과 cin을 썼을 것이다.

cout(출력) cin(입력)과의 묶인것을 해제시키지 않고, C와 C++과의 입출력 동기화를 해제하지 않으면 이 문제는 틀리게 된다.

기본적으로 C++에서는 C의 표준 스트림이 동기화가 되어있다.

C와 C++가 동일한 버퍼를 공유한다는 말이다.

이러한 동기화는 성능을 저하시키지만 스레드로부터 안전하기 때문에 동기화 상태로 두는 것이 더 좋긴 하다.

하지만 알고리즘 문제풀이 또는 예외처리나 멀티스레드 작업을 필요로 하지 않는 작업에서는 동기화를 끊어주면 속도가 빨라진다.

(C++ 표준 스트림이 독립적으로 IO(intput, output)버퍼링을 할 수 있다는 것이다. 이렇게 되면 상당히 많은 양의 입출력이 있을 경우 동기화되어있는 상태에 비해 성능이 많이 좋아진다.)

 

endl은 단순히 줄 바꿈만 해주는 것이 아니라 출력 버퍼를 비우는 역할까지 한다.

매 줄 바꿈마다 endl을 쓰면 입출력을 끊어주는 효과를 볼 수 없다.

 

ios_base::sync_with_stdio(false); //동기화 해제
cin.tie(NULL); //입출력 연결 끊기

 

참고 : https://st-lab.tistory.com/232

문제설명

 

소스코드

#include<iostream>
using namespace std;
int main()
{
	int input;
	cin >> input;
	for (int i = 0; i < input / 4; ++i)
	{
		cout << "long ";
	}
	cout << "int";
}

 

문제설명

 

소스코드

#include<iostream>
using namespace std;
int main()
{
	int input; int input2;
	cin >> input >> input2;
	int sub = input; int tmp = input2;
	for (int i = 0; i < tmp; ++i)
	{
		cin >> input >> input2;
		sub -= input * input2;
	}
	if (sub == 0) cout << "Yes" << endl;
	else cout << "No" << endl;
}