1)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
int main() {
char text[31];
int len;
int isPalindrome = true;
scanf("%[^\n]s", text);
len = strlen(text);
int begin = 0;
int end = len - 1;
for (; begin < end; begin++, end--) {
if (text[begin] == ' ')
begin++;
if (text[end] == ' ')
end--;
if (text[begin] != text[end]) {
isPalindrome = false;
break;
}
}
printf("%d \n", isPalindrome);
return 0;
}
==================================================================
2)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
int main() {
char text[31];
int len;
int isPalindrome = true;
scanf("%[^\n]s", text);
len = strlen(text);
int begin = 0;
int end = len - 1;
for (; begin < end; begin++, end--) {
if (text[begin] == ' ')
continue;
if (text[end] == ' ')
continue;
if (text[begin] != text[end]) {
isPalindrome = false;
break;
}
}
printf("%d \n", isPalindrome);
return 0;
}
이렇게 두 개를 작성해서 제출했을 때 틀렸다고 나왔습니다.
for 반복문 이하 두 if 조건문을 while로 바꾸니 통과가 되는데,
if조건문으로 실행을 하게 되면 혹시 코드에 문제가 있는건가요?
그리고 for 반복문 중 초기식에서 변수를 선언하지 않고 그 위에 선언해놓았는데요.
이 경우 위처럼 초기식을 생략해도 괜찮을까요?
문제를 풀이하는 방법은 여러 가지가 있을 수 있습니다.
다만, 문제를 해석한 전제가 틀리면 어떤 코드로도 심사문제를 통과할 수 없습니다. 회문 판별 문제의 예시를 보면 공백이 한 칸만 있는 경우가 아니라 두 칸인 경우도 있습니다.
cac
를 회문으로 판별해야 하지만
c a c
도 회문으로 판별해야 합니다.
공백 한 칸만 처리하는 코드라면 두 번째 예시를 통과할 수 없습니다.
if에서 초기식을 생략하는 것도 상관 없습니다. 상황에 따라 쓰이는 기법입니다.