책 내용 질문하기
5장 6회
도서
2018 시나공 정보처리기능사 실기
페이지
222
조회수
91
작성일
2018-05-08
작성자
탈퇴*원
첨부파일

5장의 6회 답이 이해가 잘 가지 않습니다.

디버깅 표를 보내주실 수 있으신가요?

답변
2018-05-09 09:21:29

안녕하세요.

과정별로 설명을 수록하였으니 학습해 보신 후 그래도 이해가 안되시면 질문주세요. 이후 디버깅 표가 필요하시면 첨부해 드리겠습니다.


만일 1234라는 값이 입력되었다면 0번째 배열부터
A(0) = 4
A(1) = 3
A(2) = 2
A(3) = ,
A(4) = 1
432,1이 저장됩니다.

그런 다음 출력할 때는 마지막 위치에서 부터 A(0)까지 거꾸로 출력합니다.
또한 M%10의 과정은 배열에 값을 저장하기 위한 과정으로

(i+1) % 4에 의해 i가 0일 때 나머지가 1이 되므로 No가 되어 바로 아래쪽으로 처리를 수행합니다.
M/10에 의해 1234 / 10의 몫인 123이 다시 M에 저장되고 나머지인 4는 배열 A(0)에 저장됩니다.
그런 다음 i가 증가합니다.

위로 이동 후 M이 0이 아니므로 반복하여
(i+1) % 4에 의해 i가 1일 때 나머지가 2가 되므로 No가 되어 바로 아래쪽으로 처리를 수행합니다.
M/10에 의해 123 / 10의 몫인 12가 다시 M에 저장되고 나머지인 3은 배열 A(1)에 저장됩니다.
그런 다음 i가 증가합니다.

위로 이동 후 M이 0이 아니므로 다시 반복하여
(i+1) % 4에 의해 i가 2일 때 나머지가 3이 되므로 No가 되어 바로 아래쪽으로 처리를 수행합니다.
M/10에 의해 12 / 10의 몫인 1이 다시 M에 저장되고 나머지인 2는 배열 A(2)에 저장됩니다.
그런 다음 i가 증가합니다.

위로 이동 후 M이 0이 아니므로 다시 반복하여
(i+1) % 4에 의해 i가 3일 때 나머지가 0이 되므로 A(3)에 ,가 저장된 후 i가 증가합니다.
M/10에 의해 1 / 10의 몫인 0이 다시 M에 저장되고 나머지인 1은 배열 A(4)에 저장됩니다.
그런 다음 i가 증가합니다.

위로 이동 후 M이 0이므로 변환 과정을 끝내고 오른쪽의 출력 과정을 수행합니다.
현재 i가 5이므로

i=i-1에 의해 i는 4가 됩니다.

i >= 0 에서 Yes이므로 A(4), 즉 1을 출력합니다.
i=i-1에 의해 i는 3이 됩니다.

반복하여
i >= 0 에서 Yes이므로 A(3), 즉 ,를 출력합니다.
i=i-1에 의해 i는 2가 됩니다.

반복하여
i >= 0 에서 Yes이므로 A(2), 즉 2를 출력합니다.
i=i-1에 의해 i는 1이 됩니다.

반복하여
i >= 0 에서 Yes이므로 A(1), 즉 3을 출력합니다.
i=i-1에 의해 i는 0이 됩니다.

반복하여
i >= 0 에서 Yes이므로 A(0), 즉 4을 출력합니다.
i=i-1에 의해 i는 -1이 됩니다.

반복하여
i >= 0 에서 No이므로 종료됩니다.

오늘도 즐거운 하루 되세요.

  • *
    2018-05-09 09:21:29

    안녕하세요.

    과정별로 설명을 수록하였으니 학습해 보신 후 그래도 이해가 안되시면 질문주세요. 이후 디버깅 표가 필요하시면 첨부해 드리겠습니다.


    만일 1234라는 값이 입력되었다면 0번째 배열부터
    A(0) = 4
    A(1) = 3
    A(2) = 2
    A(3) = ,
    A(4) = 1
    432,1이 저장됩니다.

    그런 다음 출력할 때는 마지막 위치에서 부터 A(0)까지 거꾸로 출력합니다.
    또한 M%10의 과정은 배열에 값을 저장하기 위한 과정으로

    (i+1) % 4에 의해 i가 0일 때 나머지가 1이 되므로 No가 되어 바로 아래쪽으로 처리를 수행합니다.
    M/10에 의해 1234 / 10의 몫인 123이 다시 M에 저장되고 나머지인 4는 배열 A(0)에 저장됩니다.
    그런 다음 i가 증가합니다.

    위로 이동 후 M이 0이 아니므로 반복하여
    (i+1) % 4에 의해 i가 1일 때 나머지가 2가 되므로 No가 되어 바로 아래쪽으로 처리를 수행합니다.
    M/10에 의해 123 / 10의 몫인 12가 다시 M에 저장되고 나머지인 3은 배열 A(1)에 저장됩니다.
    그런 다음 i가 증가합니다.

    위로 이동 후 M이 0이 아니므로 다시 반복하여
    (i+1) % 4에 의해 i가 2일 때 나머지가 3이 되므로 No가 되어 바로 아래쪽으로 처리를 수행합니다.
    M/10에 의해 12 / 10의 몫인 1이 다시 M에 저장되고 나머지인 2는 배열 A(2)에 저장됩니다.
    그런 다음 i가 증가합니다.

    위로 이동 후 M이 0이 아니므로 다시 반복하여
    (i+1) % 4에 의해 i가 3일 때 나머지가 0이 되므로 A(3)에 ,가 저장된 후 i가 증가합니다.
    M/10에 의해 1 / 10의 몫인 0이 다시 M에 저장되고 나머지인 1은 배열 A(4)에 저장됩니다.
    그런 다음 i가 증가합니다.

    위로 이동 후 M이 0이므로 변환 과정을 끝내고 오른쪽의 출력 과정을 수행합니다.
    현재 i가 5이므로

    i=i-1에 의해 i는 4가 됩니다.

    i >= 0 에서 Yes이므로 A(4), 즉 1을 출력합니다.
    i=i-1에 의해 i는 3이 됩니다.

    반복하여
    i >= 0 에서 Yes이므로 A(3), 즉 ,를 출력합니다.
    i=i-1에 의해 i는 2가 됩니다.

    반복하여
    i >= 0 에서 Yes이므로 A(2), 즉 2를 출력합니다.
    i=i-1에 의해 i는 1이 됩니다.

    반복하여
    i >= 0 에서 Yes이므로 A(1), 즉 3을 출력합니다.
    i=i-1에 의해 i는 0이 됩니다.

    반복하여
    i >= 0 에서 Yes이므로 A(0), 즉 4을 출력합니다.
    i=i-1에 의해 i는 -1이 됩니다.

    반복하여
    i >= 0 에서 No이므로 종료됩니다.

    오늘도 즐거운 하루 되세요.

  • *
    2018-05-09 22:57:35

    답지를 보고 디버깅을 해봤습니다. 먼저 A를 초기화 하면 아래와 같이 됩니다.

    A(0)

    A(1)

    A(2)

    A(3)

    A(4)

    A(5)

    A(6)

    A(7)

    A(8)

    A(9)

    0

    1

    2

    3

    4

    5

    6

    7

    8

    9

    그 후 M=1234를 입력받고 디버깅을 해보면

    K

    S(i)=A(K)

    M

    i

    0

    1234

    0

    4

    S(0)=A(4)

    123

    1

    3

    S(1)=A(3)

    12

    2

    2

    S(2)=A(2)

    1

    3

    S(3)=,

    4

    1

    S(4)=A(1)

    0

    5

    위의 표처럼 문제의 좌측 부분(M=0이 no인 부분)처럼 디버깅이 되고 그 후 M=0이므로 우측으로 넘어갑니다.

    그러면 S(i)가 출력되는데 S(4)부터 출력하므로

    S(4)=A(1)=1

    S(3)=,

    S(2)=A(2)=2

    S(1)=A(3)=3

    S(0)=A(4)=4

    가 되어 1,234가 출력이 됩니다.

    이렇게 하면 답이 맞게 나오는 것 같은데 이렇게 하는 게 맞는 건가요? A를 초기화 한다는 것이 저런 의미가 맞는 건가요?

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