백준 문제 풀 때마다 C로 짰는데 이제 도저히 귀찮아서 못하겠다. 특히 string 처리가 제일 귀찮다.

scanf, printf만 쓰다가 cin, cout을 쓰니 자바 만큼은 아니지만 속도가 확연히 느리다. 그 이유는 cin, cout이 stdio buffer와 싱크를 맞추기 때문. 싱크를 해제하면 입출력이 굉장히 빨라진다.

 

std::ios_base::sync_with_stdio(false);
std::cin.tie(nullptr);
std::cout.tie(nullptr);

ios_base::sync_with_stdio(false)는 C 입출력 함수와 C++ 입출력 스트림의 동기화를 해제하는 것. 이걸 쓰면 C, C++ 입출력 함수를 섞어 쓰면 안된다.

그 다음 cin.tie(nullptr), cout.tie(nullptr)은 입출력 스트림 사이 untie 하는 것. 자세한 설명은 요기

 

+ 그리고 줄 나눌 때 std::endl 대신 '\n'을 사용하는 게 더 빠르다. endl은 출력 버퍼를 비우기 때문에 느리다.

반응형