rladbswo12   2년 전

이 문제 풀 때,

(주석참고)

1번 방법으로 하면 시간초과 나는데

2번 방법으로 하면 풀립니다!!

왜 시간차이가 나는걸까요!?

공간복잡도 측면에서는 1번 방법이 확실히 나을 것 같고

시간복잡도 측면에서도 2번 방법보다 1번이 더 나을 수 있겠다는 생각이 드는데요!.

알려주시면 감사하겠습니다.

slah007   2년 전

전체 코드를 올려주세요.

rladbswo12   2년 전

전체 코드 포함해서 다시 올렸습니다!

slah007   2년 전

i/o를 열 때마다 시간이 걸리므로 input을 한 번에 받는 것이 약간 더 빠르기야 하겠지만 시간 초과 여부를 결정할 정도는 전혀 아닙니다.

전체 코드를 봐야 하는 이유가 이런 오류가 대부분 fastio 등의 짧지만 중요한 코드를 한쪽에서는 쓰고 다른 쪽에서는 생략하는 경우이기 때문입니다. 저 부분을 빼고 정말 한 글자도 안 틀리고 똑같다면 시간 초과가 날 수가 없다고 생각합니다.

slah007   2년 전

제가 조금 잘못 알고 있었던 것이 cin, cout의 경우 input/output stream을 왔다 갔다 하는게 생각보다 훨씬 더 느리네요. 전자는 입력 / 출력이 완전히 분리되어 있고 후자는 입력/출력 * M번을 하므로 훨씬 느립니다.

이것은 cin이 기본적으로 cout과 tie가 되어있기 때문이고 cin.tie(nullptr)을 쓰면 똑같이 통과될 것 같습니다. 자세한 것은 c++의 fast I/O를 검색해서 찾아보세요.

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