syh5477   3년 전

처음에 위 코드로 제출해봤는데 시간 초과가 나더군요. 이후 아래 코드로 바꿔서 제출해보니 그제야 통과했습니다. 과연 두 코드에 무슨 차이점이 있어서 하나는 통과되고 나머지는 시간 초과가 난 것인지 궁금합니다. :)

kgstiger   3년 전

우선 cin과 cout이 printf 와 scanf 에 비해 속도가 느립니다.

cin.tie(NULL); 과 cout.tie(NULL); 를 쓰시면 속도를 줄일수 있습니다.

또한 endl 같은경우에도 '\n' 에 비해 속도가 느립니다.

시간초과 나는 코드에서 제가 말씀드린 이 2가지 고쳐서 제출해봤더니 AC 받았습니다.

syh5477   3년 전

답변 감사합니다.

재밌는 건, 둘 중 하나만 빠져도 시간 초과가 일어나더군요. 아마도 tie(...)나 endl 모두 flush를 일으키는 게 문제가 된 것이 아닌가 싶습니다.

처음에 string과 char array 변환하는게 귀찮을 거 같아서 scanf/printf 대신 cin/cout 썼는데, 그냥 scanf/printf 쓰는 게 정신 건강 상 좋을 것 같네요.

djm03178   3년 전

항상 sync_with_stdio(false)와 tie(0)를 쓰고 endl을 안 쓰는 습관만 들인다면 불편한 점은 따로 없습니다. cin cout이 더 편리한 점이 많다고 생각합니다.

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