yp1t   7년 전

왜 이게 시간 초과인지 모르겠습니다.

ios_base::sync_with_stdio(false);

이걸쓰면 cin cout이 printf scanf와 같은 효과를 낸다고 알고 있는데 ㅜㅜ

isangyoon   7년 전

std::endl에 대해서 찾아보시면 '\n' 를 찍는 것보다 굉장히 느립니다.

또한 printf, scanf보다 std::cin, std::cout 이 느린 것도 사실이구요.

std::ios::sync_with_stdio(false); 를 한다고 scanf, printf 만큼 빨라지진 않습니다. 애초에 이런 문제들은 그냥 printf, scanf를 병행하셔서 사용하시면 됩니당.

isangyoon   7년 전

덧붙여서, std::cout << "\n"; 과 std::cout << std::endl은 20배 이상으로 속도차이가 난다고 하네요.

cin/cout은 느리기 때문에 출력이 많은 문제에서는 scanf/printf를 쓰는 것이 좋습니다. 저같은 경우는 iostream으로 해결하고 시간초과가 나는 문제에 대해서 printf, scanf를 사용합니다.

pcgos1   6년 전

그런데 이런 점은 문제가 좀 있는 것 같습니다.

printf나 scanf가 cin과 cout보다 속도가 빠른것은 인정합니다.

왜냐하면 c++자체가 c랑 호환성을 위해서, 버퍼의 sync를 맞추는 작업도 하고 있고, 

편의를 위해 자체적으로 type을 어느정도 잡아주면서 출력하기 때문입니다.

단순히 보면 printf가 cout보다 더 효율적인 함수라고 생각할 것 같습니다.

언어마다 제한하는 시간이 좀 달라질 필요성이 있지 않을까요?

자바는 더 느려질 수 있는 문제가 되는것 같습니다.

혹시 cin과 cout으로 이 문제 푸신분 있으신가요? ㅠ

댓글을 작성하려면 로그인해야 합니다.