10837번 - 동전 게임
cin.tie(0)만 해줘도 시간초과가 해결되네요.
그런데 이해가 안됩니다. 데이터가 그리 큰 것도 아닌데 왜 시간초과가 나는 걸까요?
cin.tie(0);을 하지 않으면 cin은 cout에 묶여있습니다. 그 말은 cin을 할 때마다 cout에 flush가 발생한다는 것입니다. 버퍼를 flush하는 것은 정말로 매우 무거운 작업이고, 채점 환경에서 10만 번에 1초가 넘게 걸립니다.
혹시 다른 문제들의 경우,
데이터가 똑같이 십만 개이지만 cin.tie(0)을 하지 않아도 시간초과가 나오지 않는 것은 무슨 차이가 있을까요?
cin과 cout을 번갈아 쓰게 되는 문제에만 해당됩니다. 몰아서 입력받고 몰아서 출력하는 문제에는 상관 없습니다.
댓글을 작성하려면 로그인해야 합니다.
seokvely 3년 전
cin.tie(0)만 해줘도 시간초과가 해결되네요.
그런데 이해가 안됩니다. 데이터가 그리 큰 것도 아닌데 왜 시간초과가 나는 걸까요?