인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

SS0615님의 프로필 이미지
SS0615

작성한 질문수

(2025) 일주일만에 합격하는 정보처리기사 실기

C언어 기출문제의 변형

c언어 기출문제의 변형

해결된 질문

작성

·

47

0

15:18에서 1회차 2회차는 앞뒤가 똑같은 숫자 한번만 1,2회차까지 이렇게 두번 진행되는 걸까요? 일의 자리 숫자들은 어떤 방식으로 진행되는 걸까요?

답변 2

0

주말코딩님의 프로필 이미지
주말코딩
지식공유자

코드가 어떻게 동작하는지, 그리고 각각의 입력값(1, 15, 55)에 대해 isPal() 함수 내부에서 변수들이 어떻게 변화하는지 설명해드리겠습니다.

 

코드 설명:

  • isPal() 함수는 입력된 숫자가 회문(palindrome, 앞뒤가 같은 숫자)인지 확인합니다.

    • nm: 입력된 숫자.

    • or: 원래 입력된 숫자를 저장하는 변수.

    • rv: 역순으로 재구성된 숫자를 저장하는 변수.

    • rd: 각 자릿수를 저장하는 변수.

  • while (nm != 0) 루프에서 입력된 숫자를 한 자리씩 떼어내서 역순으로 만든 후, 원래 숫자와 비교합니다.

1. 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은 회문입니다.

2. 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는 회문이 아닙니다.

3. 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언어 강의에서 다루고 있는 기출문제의 변형에 대해 질문해주셨네요. 특히 반복되는 숫자 문제에서 각 회차별 진행 방식과 일의 자리 숫자 처리 방식에 대한 내용을 궁금해하시는 것 같습니다.

숫자의 반복과 회차 진행 방식

  1. 각 회차의 진행: 문제에서 각 숫자가 앞뒤로 같은지 여부를 체크하는 것은 일반적으로 두 번의 반복을 의미합니다. 이 과정은 주어진 숫자가 좌우 대칭인지 파악하기 위한 것이며, 회차별로 각 자리 숫자를 비교하여 결정됩니다. 주로 while문이나 for문을 통해 반복 검사를 진행하는 패턴을 보입니다.

  2. 일의 자리 숫자의 처리: 일의 자리 숫자는 숫자의 마지막을 의미하므로 보통 루프 내 조건문을 통해 마지막 검사로 이어지게 됩니다. if문 또는 조건 연산자를 사용하여 특정 조건에서 반복을 빠져나갈 수 있게 로직을 설계합니다.

관련된 기존 질문에 대한 답변 중 다음의 링크를 통해 보다 자세한 내용을 확인할 수 있습니다:
- C언어 기출문제의 변형

추가적으로 씨언어의 반목 구조에 대한 기본 개념과 활용 예제를 읽어보시면 문제를 이해하는 데 도움이 되실 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.

현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

SS0615님의 프로필 이미지
SS0615

작성한 질문수

질문하기