파이썬으로 알고리즘 문제를 풀기 시작해서 얼마 안 돼 C++로 전환했는데, 이상하게 시간 초과가 뜨는 문제가 많이 보였다. 간단한 문제임에도 계속 시간 초과가 나서 하루 종일 해결을 못 했는데, 알고보니 C++의 cin, cout이 문제였다.
cin과 cout은 scanf와 printf보다 현저히 느리다고 한다. 이런 경우에는 다음 코드를 사용하면 cin과 cout의 속도를 개선할 수 있다고 한다.
// include와 네임스페이스 using 지시문 생략
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
또한 endl보다 \n를 사용하는 것이 더 빠르다. (백준 1874번 문제를 이거 때문에 시간 초과 떠서 하루 종일 못 풀었었다;;)
다만 주의할 점이 있는데
1. scanf, printf 섞어 쓰면 X
2. 싱글 스레드 환경에서만 사용 (실제 중요한 작업에서 사용하지 말기)
이 방법은 알고리즘 문제 풀이 할 때만 사용하자
------
위의 방법 다 썼는데도 시간 초과 나면 printf, scanf 사용하기
'Programming > C++' 카테고리의 다른 글
[C++ STL] 연관 컨테이너와 셋(Set) (0) | 2024.08.04 |
---|---|
[C++ STL] 덱 (Deque) (0) | 2024.07.27 |
[C++ STL] 리스트 (List) (0) | 2024.07.27 |
[C++ STL] 반복자 (Iterator) (0) | 2024.07.27 |
[C++ STL] 벡터 (Vector) (0) | 2024.07.27 |