728x90

파이썬으로 알고리즘 문제를 풀기 시작해서 얼마 안 돼 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 사용하기

 

출처: https://eine.tistory.com/entry/CC-%EC%9E%85%EC%B6%9C%EB%A0%A5-%EB%B0%A9%EB%B2%95%EC%97%90-%EB%94%B0%EB%A5%B8-%EC%86%8D%EB%8F%84-%EC%A0%95%EB%A6%AC

728x90

'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
snwdaaa