개발세발은 안되요

[시간 초과 해결] ios_base::sync_with_stdio(false); cin.tie(null); 본문

알고리즘/C++ 팁

[시간 초과 해결] ios_base::sync_with_stdio(false); cin.tie(null);

금호박 2024. 4. 4. 01:51

 알고리즘 문제를 풀 때 C++ 를 이용하면 cin, cout 함수를 이용하게 된다.

이때 실행 속도를 높이기 위해 

ios_base::sync_with_stdio(false); cin.tie(null);

를 함수 호출을 할 때 함께 작성해준다.

 

 이렇게 작성하면 C++ 만의 독립적인 버퍼가 생성된다고 한다. C의 버퍼와 병행할 수 없게 되지만 사용하는 버퍼의 수가 줄어들기 때문에 실행 속도가 빨라질 수 있다. 알고리즘 문제를 풀 때는 대부분 싱글 쓰레드 환경이기 때문에 위의 코드로 인한 문제가 발생할 확률은 적다. 

 

 하지만 위의 코드를 작성했을 때 주의해야 할 점은 흔이 C에서 사용하는 scanf, gets, getchar, printf, puts, putchar 등의 함수를 사용하면 이상한 값이 나올 수 있어서 사용하지 말아야 한다는 점이 있다. 그리고 멅티스레드 환경에서는 출력 순서를 보장하지 않기 때문의 위의 코드를 추가해서는 안된다.

 

하지만 알고리즘 문제를 풀 때 시간 초과로 인해 고민을 하고 있다면 우선 코드에 추가해보도록 해도 좋을 것 같다.

 

 

 

 


도움 받은 기술 블로그 : https://1sangcoder.tistory.com/244