ckdgus2482   8달 전

해쉬테이블을 이용해서 삽입/룩업하는 방법으로 했는데 타임아웃이 났습니다.

코드수준의 최적화도 고려하여 몇 차례 더 시도했지만 여전히 타임아웃이 났습니다.

뭔가 이상해서 콘솔 입출력을 빼고 난수를 생성해서 넣도록 해봤습니다.

N과 M을 10만으로 하고 테스트해보아도 종료되는데 0.1초도 안걸립니다.

그런데 콘솔출력이 M라인이라서 콘솔출력을 넣게되면 한참 걸립니다.

만약 채점시 콘솔 출력 시간이 무시된다면 제 답안이 타임아웃 날 이유가 없는데 자꾸 타임아웃 나니까 답답하네요.

콘솔 출력 시간까지 포함해서 2초안에 마쳐야한다면, M이 최대 10만인데 10만줄 출력을 2초안에 하는게 가능하긴 한가요?

yukariko   8달 전

콘솔 출력시간과는 무관합니다.

문제는 endl 함수가 단순히 줄바꿈기능 뿐만아니라

버퍼를 초기화하는 기능이 들어있어 시간이 많이 느립니다.

endl을 "\n" 같은것으로 한번 바꾸어보세요

plzrun   8달 전

표준 입출력 스트림에서 확인하기 때문에 콘솔에 보여지고 안보여지고 하는거는 아무 관계가 없습니다.

그니까.. 쉽게 말해서 버퍼에서 확인할테니까 콘솔창에 출력하는데 2초 이상 걸리는 것과는 아무 문제가 없다능 거져

이건 입출력 순서가 뒤바껴서 콘솔창에 보여져도 아무 문제가 없는 이유와 같습니다.

입력버퍼와 출력버퍼는 따로 존재하거든요. (stdin, stdout)


그리고 유카리코님 말씀대로 endl은 그냥 아예 안쓰는게 답입니다. ㅋ (진짜 심하게 느려요)

저는 cin, cout도 아예 안써요.. 입력 많이 받으면 너무 느리더라구요.

ckdgus2482   8달 전

endl대신 '\n'써도 타임아웃되길래 걍 cin, cout 안쓰고 scanf랑 printf로하니까 되네요.

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