Hello

: )

2016년 7월 24일 일요일

cin 과 scanf 에 대해서


10815번: 숫자 카드(https://www.acmicpc.net/problem/10815) 문제는 500,000 개의 입력값이 주어는지는 문제로 cin / cout 을 쓰면 시간 초과가 발생한다.

해결책으로는 scanf / printf 를 사용하거나, cin / cout 전에 std::ios::sync_with_stdio(false) 를 미리 호출해주어서 시간 지연을 막는 방법이 있다.

입출력 방법별 시간 측정값 참고자료: https://algospot.com/forum/read/2496/


하지만, 이 방법이 만능이 될 수는 없는 듯

API Reference: http://en.cppreference.com/w/cpp/io/ios_base/sync_with_stdio 에 보면 아래와 같이 언급되어 있다.

If the synchronization is turned off, the C++ standard streams are allowed to buffer their I/O independently, which may be considerably faster in some cases.


상황에 따라서 다를 수 있다는 얘기..

같은 문제는 아니지만, 유사 질문에 대한 백준님의 comments 를 보자
위치: https://www.acmicpc.net/board/view/1294


결론은 scanf / printf 쓰는게 제일 무난한 듯...

댓글 없음:

댓글 쓰기