해결된 질문
작성
·
40
답변 2
0
코드가 어떻게 동작하는지, 그리고 각각의 입력값(1, 15, 55)에 대해 isPal()
함수 내부에서 변수들이 어떻게 변화하는지 설명해드리겠습니다.
isPal()
함수는 입력된 숫자가 회문(palindrome, 앞뒤가 같은 숫자)인지 확인합니다.
nm
: 입력된 숫자.
or
: 원래 입력된 숫자를 저장하는 변수.
rv
: 역순으로 재구성된 숫자를 저장하는 변수.
rd
: 각 자릿수를 저장하는 변수.
while (nm != 0)
루프에서 입력된 숫자를 한 자리씩 떼어내서 역순으로 만든 후, 원래 숫자와 비교합니다.
nm = 1
일 때:입력 값이 1
인 경우, 함수가 어떻게 동작하는지 살펴보겠습니다.
초기값:
nm = 1
or = 1
(입력 값 저장)
rv = 0
(역순 숫자 초기화)
루프 첫 번째 반복:
rd = nm % 10 = 1 % 10 = 1
(마지막 자릿수)
rv = rv * 10 + rd = 0 * 10 + 1 = 1
(역순으로 숫자를 재구성)
nm = nm / 10 = 1 / 10 = 0
(숫자를 한 자릿수 없앰)
루프 종료 (nm = 0
이므로 더 이상 반복하지 않음).
최종 비교: or == rv → 1 == 1 → true
결과: 1은 회문입니다.
nm = 15
일 때:입력 값이 15
인 경우.
초기값:
nm = 15
or = 15
(입력 값 저장)
rv = 0
(역순 숫자 초기화)
루프 첫 번째 반복:
rd = nm % 10 = 15 % 10 = 5
(마지막 자릿수)
rv = rv * 10 + rd = 0 * 10 + 5 = 5
(역순으로 숫자를 재구성)
nm = nm / 10 = 15 / 10 = 1
(숫자를 한 자릿수 없앰)
루프 두 번째 반복:
rd = nm % 10 = 1 % 10 = 1
(마지막 자릿수)
rv = rv * 10 + rd = 5 * 10 + 1 = 51
(역순으로 숫자를 재구성)
nm = nm / 10 = 1 / 10 = 0
(숫자를 한 자릿수 없앰)
루프 종료 (nm = 0
이므로 더 이상 반복하지 않음).
최종 비교: or == rv → 15 == 51 → false
결과: 15는 회문이 아닙니다.
nm = 55
일 때:입력 값이 55
인 경우.
초기값:
nm = 55
or = 55
(입력 값 저장)
rv = 0
(역순 숫자 초기화)
루프 첫 번째 반복:
rd = nm % 10 = 55 % 10 = 5
(마지막 자릿수)
rv = rv * 10 + rd = 0 * 10 + 5 = 5
(역순으로 숫자를 재구성)
nm = nm / 10 = 55 / 10 = 5
(숫자를 한 자릿수 없앰)
루프 두 번째 반복:
rd = nm % 10 = 5 % 10 = 5
(마지막 자릿수)
rv = rv * 10 + rd = 5 * 10 + 5 = 55
(역순으로 숫자를 재구성)
nm = nm / 10 = 5 / 10 = 0
(숫자를 한 자릿수 없앰)
루프 종료 (nm = 0
이므로 더 이상 반복하지 않음).
최종 비교: or == rv → 55 == 55 → true
결과: 55는 회문입니다.
1이 입력되었을 때: 1은 회문입니다.
15가 입력되었을 때: 15는 회문이 아닙니다.
55가 입력되었을 때: 55는 회문입니다.
0
안녕하세요, 인프런 AI 인턴입니다. SS0615님.
C언어 강의에서 다루고 있는 기출문제의 변형에 대해 질문해주셨네요. 특히 반복되는 숫자 문제에서 각 회차별 진행 방식과 일의 자리 숫자 처리 방식에 대한 내용을 궁금해하시는 것 같습니다.
각 회차의 진행: 문제에서 각 숫자가 앞뒤로 같은지 여부를 체크하는 것은 일반적으로 두 번의 반복을 의미합니다. 이 과정은 주어진 숫자가 좌우 대칭인지 파악하기 위한 것이며, 회차별로 각 자리 숫자를 비교하여 결정됩니다. 주로 while
문이나 for
문을 통해 반복 검사를 진행하는 패턴을 보입니다.
일의 자리 숫자의 처리: 일의 자리 숫자는 숫자의 마지막을 의미하므로 보통 루프 내 조건문을 통해 마지막 검사로 이어지게 됩니다. if
문 또는 조건 연산자를 사용하여 특정 조건에서 반복을 빠져나갈 수 있게 로직을 설계합니다.
관련된 기존 질문에 대한 답변 중 다음의 링크를 통해 보다 자세한 내용을 확인할 수 있습니다:
- C언어 기출문제의 변형
추가적으로 씨언어의 반목 구조에 대한 기본 개념과 활용 예제를 읽어보시면 문제를 이해하는 데 도움이 되실 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.