if (matched > 0 && target[j] != target[matched]) matched = pi[matched - 1];
이부분 if문 대신 while로 고치면 잘됩니다.
while(matched > 0 && target[j] != target[matched]) matched = pi[matched - 1];
원래 코드에서는 아마 테스트 문자가 aaaaaaaafbaaaaaaaaf인 경우?
안될거 같은 느낌이 드네요
1701번 - Cubeditor
if (matched > 0 && target[j] != target[matched]) matched = pi[matched - 1];
이부분 if문 대신 while로 고치면 잘됩니다.
while(matched > 0 && target[j] != target[matched]) matched = pi[matched - 1];
원래 코드에서는 아마 테스트 문자가 aaaaaaaafbaaaaaaaaf인 경우?
안될거 같은 느낌이 드네요
aaaaafbaaaaf는 반례가 아니네요..
반례는 못찾았지만 if 문 while로 고치면 동작합니다!
감사합니다!
댓글을 작성하려면 로그인해야 합니다.
qwebnm7788 6년 전
주어진 문자열에서 한 문자씩 줄여가면서 failure function 을 구하는 과정에서
얻을 수 있는 값 중 최대값을 구하는 방식으로 접근했습니다.
88%정도에서 틀렸습니다 가 나오는데 어느 부분을 수정해야할지 잘 모르겠습니다.