kdk8361   2년 전

N보다 큰 팰린드롬 수 중 가장 작은 것을 구하는 것이므로 시작부터 1을 더해주고 중간(mid)을 기점으로 좌우로 나누어서 생각했습니다.

좌측(a)의 역(rev)을 취했을 때 우측(b)보다 크면 b에 수를 더해서 rev(a)를 만들어 팰린드롬으로 만들 수 있으므로 b=rev(a)를 넣습니다.

rev(a)<b인 경우 b바로 왼쪽의 자리++ 하게 되면 b가 0으로 채워져서 어떤 rev(a)라도 만들 수 있으므로

자리수가 홀수면 mid++, 짝수면 a++한 후 b=rev(a)를 하는 방식입니다.

접근방법 혹은 코드가 잘못되었거나 반례가 있다면 알려주시면 감사하겠습니다.

simm4256   2년 전

한자리 수는 그대로 출력하셔야 합니다.

문제는 저도 94퍼에서 틀렸네요. 끙...

kdk8361   2년 전

N보다 큰 팰린드롬 수 중에서 가장 작은걸 구하는거기 때문에 N은 제외하는거 아닌가요?

simm4256   2년 전

전 바보였습니다.

질문 글에서 오히려 제가 해답을 얻고 가네요....

덕분에 맞았으니 이번엔 이 코드의 반례를 찾도록 노력해보겠습니다.

psy1125p   2년 전

+1 하는거 덕분에 맞췄습니다 감사합니다. 

근데 50%에서 틀렷길래 이것저것 넣어보다가

9999999999 를  막 갈겨서 넣었더니 끝에 이상한문자가 하나 더 추가됫엇습니다. 

저는 printf("%s",N) 를  for() printf("%c",N[]) 으로 하니까 맞았네요 

혹시 이런문제일수도 있으니 확인해보세요 !

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