codingchobo   1년 전

진짜 도저히 반례를 못 찾겠어서

이것 저것 시도해보다가

앞뒤로 같은 최대 길이의 k를 저장해놓는 배열을 

0으로 초기화 시키지 않고 전역변수로 두었는데, 그게 문제였더군요..

대부분 다른 이유로 틀리신 거겠지만.. 0으로 잘 초기화 해주세요.

int *pi -> vector<int> pi로 바꾸고 pi = vector<int>(P.length(), 0); 추가해줘서 맞혔습니다.

+) k 값을 계산하는 과정에서 이전의 더 짧은 길이의 배열의 k값들을 이용해서 구하게 되는데, 이 때 이전의 길이 i인 substring의 k값을 이용하는게 아니라 pattern의 i번째 character를 이용해서 구하는 실수를 했는데.. 이렇게 해도 대부분의 테케는 통과했습니다. 디버깅이 빡세네요.

아래에 해당 버그 관련해서 코드 첨부합니다.

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