47.3 연습문제: 정수 회문 판별하기

정수 회문이란 앞 뒤가 같은 수를 의미합니다. 예) 121, 353, 11211 등. 다음 소스 코드를 완성하여 입력된 정수가 회문인지 판별하세요.

practice_integer_palindrome.c

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdbool.h>

int main()
{
    long long num1;
    char text[30];

    printf("정수를 입력하세요: ");
    scanf("%lld", &num1);

    ______________________________

    int length;
    bool isPalindrome = true;

    length = strlen(text);

    int begin = 0;
    int end = length - 1;
    while (begin < end)
    {
        if (text[begin] != text[end])
        {
            isPalindrome = false;
            break;
        }

        _____________
        _____________
    }

    printf("%d\n", isPalindrome);

    return 0;
}

실행 결과

정수를 입력하세요: 123456787654321 (입력)
1

정답

 sprintf(text, "%lld", num1);
 begin++;
 end--;

해설

정수가 회문인지 판별하려면 정수를 문자열로 변환해야 합니다. 따라서 sprintf 함수로 num1을 문자열로 변환하여 text에 저장했습니다.

여기서는 회문을 판별할 때 for 반복문 대신 while 반복문을 사용하고 있고 시작 인덱스 begin과 끝 인덱스 end를 사용하고 있습니다. begin은 왼쪽에서 오른쪽으로 이동하므로 begin++, end는 오른쪽에서 왼쪽으로 이동하므로 end--와 같이 만들어주면 됩니다.