인프런 커뮤니티 질문&답변
c언어 기출문제의 변형
해결된 질문
작성
·
111
답변 2
0
코드가 어떻게 동작하는지, 그리고 각각의 입력값(1, 15, 55)에 대해 isPal() 함수 내부에서 변수들이 어떻게 변화하는지 설명해드리겠습니다.
코드 설명:
isPal()함수는 입력된 숫자가 회문(palindrome, 앞뒤가 같은 숫자)인지 확인합니다.nm: 입력된 숫자.or: 원래 입력된 숫자를 저장하는 변수.rv: 역순으로 재구성된 숫자를 저장하는 변수.rd: 각 자릿수를 저장하는 변수.
while (nm != 0)루프에서 입력된 숫자를 한 자리씩 떼어내서 역순으로 만든 후, 원래 숫자와 비교합니다.
1. nm = 1일 때:
입력 값이 1인 경우, 함수가 어떻게 동작하는지 살펴보겠습니다.
초기값:
nm = 1or = 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은 회문입니다.
2. nm = 15일 때:
입력 값이 15인 경우.
초기값:
nm = 15or = 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는 회문이 아닙니다.
3. nm = 55일 때:
입력 값이 55인 경우.
초기값:
nm = 55or = 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언어 기출문제의 변형
추가적으로 씨언어의 반목 구조에 대한 기본 개념과 활용 예제를 읽어보시면 문제를 이해하는 데 도움이 되실 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





