책 내용 질문하기
1과목 실무알고리즘 4장 예상문제은행 10번, 266 267쪽 관련 문의드립니다.
도서
2019 시나공 정보처리기사 실기(산업기사포함)
페이지
267,589
조회수
147
작성일
2019-10-03
작성자
탈퇴*원
첨부파일

문제 : 정수 N을 입력받아 소인수분해하여 그결과를 출력하는 프로그램

c가 배열 인덱스인데 -1 부터 시작해서 do-while문으로 증가시킨후 값을 대입합니다.

그러면 만족하는 결과가 2개일때 c는 1이고 배열엔 c[0], c[1] 두개의값에 대입이 되어있을겁니다.

 

밑에 결과 출력하는 for문에서 y=0; y <= (      ) ; y++ 인데

답지에는 c-1 로 되어있습니다.

위 예시일때 while문 빠져나오면 c는 1이고 답지대로 대입하면 y=0; y<= 0; y++

즉 한번밖에 돌지않습니다 출력은 c[0]만 출력,

 

그래서 답이 c가 되어야하는게 아닌가 싶습니다.

답지 page : 589쪽

요약하자면 답이 c-1이 맞는지, 맞다면 왜 c-1인지 궁금합니다. 

답변
2019-10-04 10:49:24

안녕하세요 길벗수험서 운영팀입니다.

 

문제의 <프로그램 실행 예시>와

코드의 출력부분을 살펴보세요.

 

실행 예시에 따르면, 소인수 분해한 결과가 2,2,3,11 의 4가지가 나온경우

'x'표시는 3번이 출력되어야 합니다.

 

소인수 분해의 결과로 4개가 나왔다면 c는 0, 1, 2, 3으로 값이 변경되며 마지막에 3의 값을 갖게 되겠죠.

때문에 c가 0일 때, '2x' 출력

1일 때, '2x' 출력

2일 때, '3x' 출력

여기까지만 반복문으로 돌려 출력해준 뒤 마지막 11의 값을 'x' 없이 따로 출력하여

printf("%d", s[c]);

'11'을 출력하게 만듦으로써 문제의 <프로그램 실행 예시> 와 동일한 출력이 나오게 하는 것입니다.

 

행복한 하루되세요 :)

  • 관리자
    2019-10-04 10:49:24

    안녕하세요 길벗수험서 운영팀입니다.

     

    문제의 <프로그램 실행 예시>와

    코드의 출력부분을 살펴보세요.

     

    실행 예시에 따르면, 소인수 분해한 결과가 2,2,3,11 의 4가지가 나온경우

    'x'표시는 3번이 출력되어야 합니다.

     

    소인수 분해의 결과로 4개가 나왔다면 c는 0, 1, 2, 3으로 값이 변경되며 마지막에 3의 값을 갖게 되겠죠.

    때문에 c가 0일 때, '2x' 출력

    1일 때, '2x' 출력

    2일 때, '3x' 출력

    여기까지만 반복문으로 돌려 출력해준 뒤 마지막 11의 값을 'x' 없이 따로 출력하여

    printf("%d", s[c]);

    '11'을 출력하게 만듦으로써 문제의 <프로그램 실행 예시> 와 동일한 출력이 나오게 하는 것입니다.

     

    행복한 하루되세요 :)

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.