int main(void){
ios::sync_with_stdio(0);
cin.tie(0);
}
scanf/printf와는 다르게 cin/cout에서는 입출력으로 인한 시간초과를 방지하기 위해 반드시 ios::sync_with_stdio(0), cin.tie(0)이라는 두 명령을 실행시켜야 합니다. 두 명령을 실행시키지 않으면 입/출력의 양이 많을 때 시간초과가 발생할 수 있습니다.
-ios::sync_with_stdio(0) : C++ stream과 C stream의 sync를 끄는 명령. 따라서 해당 명령어를 입력할 경우 printf와 cout을 함께 쓰면 안됨. cout만 써야함.
-cin.tie(0) : cin과 cout이 번갈아 나올 때 마다 flush를 하지 않도록 하는 명령. 채점 환경에서는 input buffer와 output buffer가 분리되어 있기 때문에 flush를 해줄 필요가 없음. 비슷한 이유로 줄바꿈을 endl로 하는 경우가 있는데, endl은 줄을 바꾸고(즉 '\n'을 출력하고) flush를 하라는 명령이므로 endl을 사용하면 불필요한 flush 명령이 지속적으로 발생해 시간초과가 발생할 수 있음.
참고
https://blog.encrypted.gg/724?category=773649
728x90
반응형
'CS > Algorithm 문제' 카테고리의 다른 글
[Algorithm] STL vector (0) | 2019.10.14 |
---|---|
[Algorithm] 가장 큰 수 찾기 (0) | 2019.09.21 |
[Algorithm] bits/stdc++.h 헤더 (0) | 2019.09.19 |
[SW Expert Academy] 2072. 홀수만 더하기 (0) | 2019.09.16 |
[SW Expert Academy] 2071. 평균값 구하기 (0) | 2019.09.15 |