백준 시간 초과 발생
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 |
---|