kaskandk   5년 전

어느 부분이 시간초과가 나는지 모르겠습니다. 

검색 후 비슷한 코드로 clear를 받았는데 

어떤 부분이 문제가 있어서 제 코드는 시간초과가 발생하는건가요?

djm03178   5년 전

res = res + k; 와 res += k;는 서로 다릅니다. 전자는 res라는 문자열의 내용을 복사하고 그 뒤에 k라는 문자를 이어붙인 string 객체를 생성해서 res에 대입하는 것이고, 후자는 res의 기존 내용을 그대로 두고 뒤에 k라는 문자만 붙이는 것입니다. res = res + k; 라고 하면 이 문장이 실행될 때마다 기존의 res의 내용을 모조리 복사하는 작업이 들어가기 때문에 O(res.size()^2)의 시간이 소요됩니다.

51, 61, 64번째 줄을 모두 +=으로 고치니 252ms에 통과됩니다.

kaskandk   5년 전

djm03178님 정말 감사합니다.

몰랐던 사실을 알게되었습니다!

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