cin.tie(NULL);
ios_base::sync_with_stdio(false);
C++로 알고리즘을 풀 때 실행 속도를 높이기 위해 다음과 같은 구문을 작성해준다.
두둥탁. 알고리즘 블로그를 찾아보면서 반복적으로 나오는 코드여서 뭔가 하고 찾아보게 되었다.
ios_base::sync_with_stdio(false);
이것의 장점은 동기화를 비활성해줘서 c++의 독립적인 버퍼가 생성된다. 사용하는 버퍼의 수는 줄어들지만 실행 속도는 빨라진다.
하지만 멀티 쓰레드 환경에서는 출력 순서를 보장할 수 없다. C 함수를 함께 사용하지 않으면 될 것 같다.
cin.tie(NULL);
cin
과 cout
의 묶음으로 풀어주는 것인데 IO 작업을 진행하기 전에 자동으로 버퍼를 비워줌을 보장한다. 알고리즘을 풀 때는 화면에 바로 보이는 것이 중요하지 않기 때문에 묶음을 풀어주는 것이 좋다.
추가로 c++에서 endl
으로 개행하는데 이렇지 말고 알고리즘의 실행 속도를 높이기 위해 \n
을 통해 개행하는 것이 좋다.
알고리즘 실력을 올리는 것보다 이런거 알아서 조금이라도 속도 높이는게 재밌을 나이, 23살..
다음은 참고 stack overflow 링크 : https://stackoverflow.com/questions/31162367/significance-of-ios-basesync-with-stdiofalse-cin-tienull
참고 백준 링크 : https://www.acmicpc.net/board/view/22716