5장의 6회 답이 이해가 잘 가지 않습니다.
디버깅 표를 보내주실 수 있으신가요?
안녕하세요.
과정별로 설명을 수록하였으니 학습해 보신 후 그래도 이해가 안되시면 질문주세요. 이후 디버깅 표가 필요하시면 첨부해 드리겠습니다.
만일 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를 초기화 한다는 것이 저런 의미가 맞는 건가요?