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년 전
어느 부분이 시간초과가 나는지 모르겠습니다.
검색 후 비슷한 코드로 clear를 받았는데
어떤 부분이 문제가 있어서 제 코드는 시간초과가 발생하는건가요?