C++ / ios::sync_with_stdio(false), cin.tie(0) ( 백준 시간 초과 해결 방법)

백준 시간 초과 발생

C++로 백준 문제를 풀다보면 가끔 원인불명의 시간초과가 계속 뜰 때가 있습니다.

다양한 이유가 있겠지만 그 중에서는 입출력 양이 많아지면서 소모시간이 증가하여 시간초과가 발생하는 경우가 있습니다.

그러한 경우의 해결 방안입니다.

 

ios::sync_with_stdio(false), cin.tie(0)

ios::sync_with_stdio(false), cin.tie(0)는 c언어와 c++언어의 표준 stream간의 동기화를 false ( 해제 ) 해 줍니다.

	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

c++ 언어는 기본적으로 동기화가 되어 있어 두 언어의 입출력 방식을 혼합해서 사용해도  (printf(), scanf(), std::cin, std::cout ) 문제가 발생하진 않습니다.

 

동기화를 해제하게 되면 c++에서 c언어의 입출력 방식을 사용할 수 없게 됩니다.

하지만 c++의 입출력만 사용하게 되기 때문에 동기화 하면서 들던 시간을 줄일 수 있어,

입출력 속도가 빨라집니다.

 

입력 속도 비교

https://www.acmicpc.net/blog/view/56

 

'BAEKJOON > C++ Tip' 카테고리의 다른 글

C++ / upper_bound, lower_bound ( 이분 탐색 )  (0) 2024.11.19