C++ <iostream> 표준 입출력은 C와 다르게 구현이 되어있습니다.
그래서 기본적으로 C++에서 입출력 작업을 할 때마다 C의 표준 입출력과 동기화되어 있도록 설정이 되어 있는데, 이 과정이 생각보다 꽤 느립니다.
또, C++은 다른 마지막으로 작업한 I/O 스트림이 아닌 다른 곳에서 입출력 작업하려고 할 때 입출력 버퍼를 비우는 작업을 수행하는데, 이 상태를 스트림이 Tied 되어있다라고 합니다.
이러한 상황을 해결기 위해서는 아래와 같이 하시면 됩니다.
ios_base::sync_with_stdio(false); 로 C 표준 입출력과의 동기화를 하지 않도록 설정하여 속도를 빠르게 올릴 수 있고,
cin.tie(NULL); cout.tie(NULL); 이 작업으로 자동으로 스트림을 untie 시켜서 자동적으로 입출력 버퍼를 비우지 않도록 설정할 수 있습니다.
shjv 5년 전
안녕하세요^^
https://www.acmicpc.net/blog/v...
백준 사이트에서 입/출력 속도 비교글은 이미 읽었지만,
이문제에서 우선순위큐를 사용한 방법으로 문제를 풀었는데요.
cin,cout으로 제출하면 시간초과가 뜨고
printf,scanf로 하면 20ms로 통과가 되네요.
시간제한이 2초라고 적혀있는데
어쩌다가 100배나 차이가 나게되는 것일까요?????
궁금해서 여쭤봅니다.