47.5 심사문제 질문
, 김 태건님이 작성 //47.5
char text1[30];
char text2[30];
int length;
bool isPalindrome = true;
scanf("%[^\n]s", text1);
length = strlen(text1);
for (int i = 0, j = 0; i < length; i++, j++)
{
text2[i] = text1[j];
if (text1[j] == " ")
j++;
}
for (int i = 0; i < length / 2; i++)
{
if (text2[i] != text2[length - 1 - i])
{
isPalindrome = false;
break;
}
}
printf("%d\n", isPalindrome);
return 0;
이런 식으로 배열 2개를 만들어서 다른 한쪽에 공백을 없앤뒤에 검사를 하려했습니다.
근데 조건문으로 공백이 있으면 건너뛰려고 했는데 그러질 못하고 있습니다.
뭐가 문제인지 알 수 있을까요?
회신: 47.5 심사문제 질문
, 도장_ 관리자님이 작성문의한 코드는 text1의 length를 구했는데,
공백을 제거한 text2의 length를 새로 구해야 할 겁니다.
디버거로 중단점을 지정하고 단계별로 선택하면서 변수의 값이 바뀌는 걸 관찰해보세요.
디버거는 UNIT 6, 중단점은 UNIT 6.1을 참조하세요.
이 문제는 복사하지 않고 푸는 방법이 더 풀기 쉬울 겁니다.
47.3의 회문과 비슷하게 하되
중첩 루프를 쓰고, 안쪽 루프에서 공백이 있으면 건너 뛰는 방식이 더 쉽습니다.
감사합니다.