his130   3년 전

코드는 string 으로 문자열로 2진수를 입력받습니다.

그리고 문자열이 3의 배수이면 3개씩 그렇지 않으면 3의 배수로 맞춘 후 계속 자르는 방식입니다.

앞의 3개 값을 구해서 출력하고, 그 다음을 구해서 출력하고 이런식인데

시간초과가 왜 나는지 모르겠습니다...

3개씩 끊어서 푼다는 방식인데 어느 점에서 잘못됐을까요??ㅠㅠㅠ

djm03178   3년 전

http://en.cppreference.com/w/c...

substr에 대한 C++ Reference의 설명에 의하면, substr의 시간 복잡도는 count에 비례합니다. count라는 것은 결과 문자열의 길이를 말하는 것으로, 예를 들어 처음 99만 9999개의 문자로 이루어진 s에서 s.substr(3); 을 수행하는 것의 시간은 99만 9996이라는 것입니다. 이걸 s의 길이가 0이 될 때까지 수행하는 것은 O((원래길이)^2)의 시간이 소요됩니다.

his130   3년 전

와..그렇군요.. 너무 감사합니다!!!

nzzangyh   2년 전

큰 깨달음 얻고갑니다..

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