알고리즘을 설명하자면,


asf라는 단어가 있으면

int cnt=0;

asf+s[cnt]=asfa 팰린드롬이 아니므로 넘어감. cnt++

asf+s[cnt]=asfs 팰린드롬이 아니지만 최소 길이를 채우기 위해선 asf에서 s까지만 체크하면 됨으로(asffsa가 되는걸 방지)

s를 추가하고 cnt를 0으로 초기화.

asfs+s[0]=asfsa 팰린드롬 O s.size()를 출력.

이런식의 알고리즘 인데요.


반례가 뭔지 모르겠네요..

yukariko   1년 전

반례는 모르겠지만

아래 소스가 실행되는 입력이 있는듯 하네요.

저 소스를 지우니 런타임에러를 받았습니다.

그리고 check함수에 오류가 있네요.

그나저나 들여쓰기가 제대로 되어있지않아서 소스를 읽기가 힘듭니다..

yukariko   1년 전

aabc를 입력으로 주니 오류가 생기네요

이 소스는 process(s,1)을 불러 올때 무한루프가 생길수 있어, 무한루프 방지용으로 해놓은 것인데..

저는 aabc 입력하니까 7이 출력되는데..

뭐가 잘못된지 모르겠네요 ㅠ


yukariko   1년 전

제가 다시 aabc를 입력하니 4가나오네요

이것은 check 함수가 잘못돼서 나온 결과같습니다.

음 ㅠ 저는 7 나오는데 뭐가 문제인지..

353a49ab25b902a72bf8a51511aaeeec.png



yukariko   1년 전

aabcb 입력을 주니 답이 9가 나왔습니다.

답은 aabcbaa 으로 7이 나와야 맞습니다.

yukariko   1년 전

네 컴파일 환경에 따라 답이 다르게 나올것입니다.

check함수는 그렇게 만들어져있어요.

원인은 직접 찾아보시길..

오.. 감사합니다 ㅎㅎ

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