42.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--;
해설
정수가 회문인지 판별하려면 정수를 문자열로 변환해야 합니다. 따라서printf함수로 num1을 문자열로 변환하여 text에 저장했습니다.
여기서는 회문을 판별할 때 for 반복문 대신 while 반복문을 사용하고 있고 시작 인덱스 begin과 끝 인덱스 end를 사용하고 있습니다. begin은 왼쪽에서 오른쪽으로 이동하므로 begin++, end는 오른쪽에서 왼쪽으로 이동하므로 end--와 같이 만들어주면 됩니다.