책 내용 질문하기
131쪽 46번 문제
도서
2019 시나공 정보처리기사 실기(산업기사포함)
페이지
131
조회수
400
작성일
2019-04-06
작성자
탈퇴*원
첨부파일

해설을 봐도 중간에 i j는 왜나오는거고 어떻게 되는건지 하나도 모르겠습니다 좀 자세한 해설 부탁드립니다

답변
2019-04-08 11:32:28

안녕하세요.

 

numAry에는 0, 0, 0, 0, 3 이 저장되어 있습니다.

즉 

numAry[0]에는 0이 

numAry[1]에는 0이 

numAry[2]에는 0이 

numAry[3]에는 0이 

numAry[4]에는 3이 저장되어 있는 것이죠. 

 

바깥쪽 for문 

j는 초기값 4를 가지고 종료값 j>=0 조건에 만족하므로 안쪽 for문을 수행합니다. 

 

안쪽 for문

i는 초기값 4를 가지고 종료값 i  > j 조건을 만족하지 않으므로 반복문을 수행하지 않고 빠져나옵니다. 

 

다시 

바깥쪽 for문 

j는 증가값 --j로 인해 1 감소되어 3이된 상태에서 종료값 j>=0 조건에 만족하므로 안쪽 for문을 수행합니다. 

 

안쪽 for문 

i는 초기값 4을 가지고 종료값 i >j 조건을 만족하므로 

 

numAry[j] += numAry[i];를 수행하여

numAry[3]에 numAry[4]의 값을 누적합니다. 그러면 아래와 같이 numAry[3]의 값이 변경됩니다. 

 

numAry[0]에는 0

numAry[1]에는 0 

numAry[2]에는 0 

numAry[3]에는 3 

numAry[4]에는 3이 저장되어 있습니다. 

 

안쪽 for문 

i는 증가값 --i로 인해 1 감소되어 3이된 상태에서 종료값 i > j 조건을 만족하지 않으므로 반문을 빠져나옵니다. 

 

다시 

바깥쪽 for문 

j는 증가값 --j로 인해 1 감소되어 2가된 상태에서 종료값 j>=0 조건에 만족하므로 안쪽 for문을 수행합니다. 

 

안쪽 for문 

i는 초기값 4을 가지고 종료값 i >j 조건을 만족하므로 

 

numAry[j] += numAry[i];를 수행하여

numAry[2]에 numAry[4]의 값을 누적합니다. 그러면 아래와 같이 numAry[2]의 값이 변경됩니다. 

numAry[0]에는 0 

numAry[1]에는 0 

numAry[2]에는 3 

numAry[3]에는 3 

numAry[4]에는 3이 저장되어 있습니다. 

 

안쪽 for문 

i는 증가값 --i로 인해 1 감소되어 3이된 상태에서 종료값 i > j 조건을 만족하므로 

 

numAry[j] += numAry[i];를 수행하여

numAry[2]에 numAry[3]의 값을 누적합니다. 그러면 아래와 같이 numAry[2]의 값이 변경됩니다. 

 

numAry[0]에는 0

numAry[1]에는 0 

numAry[2]에는 6 

numAry[3]에는 3 

numAry[4]에는 3이 저장되어 있습니다. 

 

안쪽 for문 

i는 증가값 --i로 인해 1 감소되어 2이된 상태에서 종료값 i > j 조건을 만족하지 않으므로 반문을 빠져나옵니다. 

 

다시 

바깥쪽 for문 

j는 증가값 --j로 인해 1 감소되어 1이된 상태에서 종료값 j>=0 조건에 만족하므로 안쪽 for문을 수행합니다. 

 

안쪽 for문 

i는 초기값 4을 가지고 종료값 i >j 조건을 만족하므로 

 

numAry[j] += numAry[i];를 수행하여

numAry[1]에 numAry[4]의 값을 누적합니다. 그러면 아래와 같이 numAry[1]의 값이 변경됩니다. 

 

numAry[0]에는 0

numAry[1]에는 3 

numAry[2]에는 6 

numAry[3]에는 3 

numAry[4]에는 3이 저장되어 있습니다. 

 

안쪽 for문 

i는 증가값 --i로 인해 1 감소되어 3이된 상태에서 종료값 i > j 조건을 만족하므로 

 

numAry[j] += numAry[i];를 수행하여 

numAry[1]에 numAry[3]의 값을 누적합니다. 그러면 아래와 같이 numAry[1]의 값이 변경됩니다. 

 

numAry[0]에는 0 

numAry[1]에는 6 

numAry[2]에는 6 

numAry[3]에는 3 

numAry[4]에는 3이 저장되어 있습니다. 

 

안쪽 for문 

i는 증가값 --i로 인해 1 감소되어 2가된 상태에서 종료값 i > j 조건을 만족하므로 

 

numAry[j] += numAry[i];를 수행하여

numAry[1]에 numAry[2]의 값을 누적합니다. 그러면 아래와 같이 numAry[1]의 값이 변경됩니다. 

 

numAry[0]에는 0

numAry[1]에는 12 

numAry[2]에는 6 

numAry[3]에는 3 

numAry[4]에는 3이 저장되어 있습니다. 

 

안쪽 for문 

i는 증가값 --i로 인해 1 감소되어 1이된 상태에서 종료값 i > j 조건을 만족하지 않으므로 반문을 빠져나옵니다. 

 

다시 

바깥쪽 for문 

j는 증가값 --j로 인해 1 감소되어 0이된 상태에서 종료값 j>=0 조건에 만족하므로 안쪽 for문을 수행합니다. 

 

안쪽 for문 

i는 초기값 4을 가지고 종료값 i >j 조건을 만족하므로 

 

numAry[j] += numAry[i];를 수행하여

numAry[0]에 numAry[4]의 값을 누적합니다. 그러면 아래와 같이 numAry[0]의 값이 변경됩니다. 

 

numAry[0]에는 3

numAry[1]에는 12 

numAry[2]에는 6 

numAry[3]에는 3 

numAry[4]에는 3이 저장되어 있습니다. 

 

안쪽 for문 

i는 증가값 --i로 인해 1 감소되어 3이된 상태에서 종료값 i > j 조건을 만족하므로 

 

numAry[j] += numAry[i];를 수행하여

numAry[0]에 numAry[3]의 값을 누적합니다. 그러면 아래와 같이 numAry[0]의 값이 변경됩니다. 

 

numAry[0]에는 6

numAry[1]에는 12 

numAry[2]에는 6 

numAry[3]에는 3 

numAry[4]에는 3이 저장되어 있습니다. 

 

안쪽 for문 

i는 증가값 --i로 인해 1 감소되어 2가된 상태에서 종료값 i > j 조건을 만족하므로 

 

numAry[j] += numAry[i];를 수행하여

numAry[0]에 numAry[2]의 값을 누적합니다. 그러면 아래와 같이 numAry[0]의 값이 변경됩니다. 

 

numAry[0]에는 12

numAry[1]에는 12 

numAry[2]에는 6 

numAry[3]에는 3 

numAry[4]에는 3이 저장되어 있습니다. 

 

안쪽 for문 

i는 증가값 --i로 인해 1 감소되어 1이된 상태에서 종료값 i > j 조건을 만족하므로 

 

numAry[j] += numAry[i];를 수행하여

numAry[0]에 numAry[1]의 값을 누적합니다. 그러면 아래와 같이 numAry[0]의 값이 변경됩니다. 

 

numAry[0]에는 24

numAry[1]에는 12 

numAry[2]에는 6 

numAry[3]에는 3 

numAry[4]에는 3이 저장되어 있습니다. 

 

안쪽 for문 

i는 증가값 --i로 인해 1 감소되어 1이된 상태에서 종료값 i > j 조건을 만족하지 않으므로 반문을 빠져나옵니다. 

 

다시 

바깥쪽 for문 

j는 증가값 --j로 인해 1 감소되어 -1이된 상태에서 종료값 j>=0 조건에 만족하지 않으므로  반복문을 빠져나옵니다. 

 

그래서 결국 최종적으로 nuymAry 배열의 값은 

24 12 6 3 3이 되므로 화면에는 한 줄씩 출력되어 

 

24

12 

이 된 것입니다 

 

수행 과정을 535쪽 디비깅 표와 함께 이해하시면 쉽게 이해하실 수 있습니다.

 

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

  • 관리자
    2019-04-08 11:32:28

    안녕하세요.

     

    numAry에는 0, 0, 0, 0, 3 이 저장되어 있습니다.

    즉 

    numAry[0]에는 0이 

    numAry[1]에는 0이 

    numAry[2]에는 0이 

    numAry[3]에는 0이 

    numAry[4]에는 3이 저장되어 있는 것이죠. 

     

    바깥쪽 for문 

    j는 초기값 4를 가지고 종료값 j>=0 조건에 만족하므로 안쪽 for문을 수행합니다. 

     

    안쪽 for문

    i는 초기값 4를 가지고 종료값 i  > j 조건을 만족하지 않으므로 반복문을 수행하지 않고 빠져나옵니다. 

     

    다시 

    바깥쪽 for문 

    j는 증가값 --j로 인해 1 감소되어 3이된 상태에서 종료값 j>=0 조건에 만족하므로 안쪽 for문을 수행합니다. 

     

    안쪽 for문 

    i는 초기값 4을 가지고 종료값 i >j 조건을 만족하므로 

     

    numAry[j] += numAry[i];를 수행하여

    numAry[3]에 numAry[4]의 값을 누적합니다. 그러면 아래와 같이 numAry[3]의 값이 변경됩니다. 

     

    numAry[0]에는 0

    numAry[1]에는 0 

    numAry[2]에는 0 

    numAry[3]에는 3 

    numAry[4]에는 3이 저장되어 있습니다. 

     

    안쪽 for문 

    i는 증가값 --i로 인해 1 감소되어 3이된 상태에서 종료값 i > j 조건을 만족하지 않으므로 반문을 빠져나옵니다. 

     

    다시 

    바깥쪽 for문 

    j는 증가값 --j로 인해 1 감소되어 2가된 상태에서 종료값 j>=0 조건에 만족하므로 안쪽 for문을 수행합니다. 

     

    안쪽 for문 

    i는 초기값 4을 가지고 종료값 i >j 조건을 만족하므로 

     

    numAry[j] += numAry[i];를 수행하여

    numAry[2]에 numAry[4]의 값을 누적합니다. 그러면 아래와 같이 numAry[2]의 값이 변경됩니다. 

    numAry[0]에는 0 

    numAry[1]에는 0 

    numAry[2]에는 3 

    numAry[3]에는 3 

    numAry[4]에는 3이 저장되어 있습니다. 

     

    안쪽 for문 

    i는 증가값 --i로 인해 1 감소되어 3이된 상태에서 종료값 i > j 조건을 만족하므로 

     

    numAry[j] += numAry[i];를 수행하여

    numAry[2]에 numAry[3]의 값을 누적합니다. 그러면 아래와 같이 numAry[2]의 값이 변경됩니다. 

     

    numAry[0]에는 0

    numAry[1]에는 0 

    numAry[2]에는 6 

    numAry[3]에는 3 

    numAry[4]에는 3이 저장되어 있습니다. 

     

    안쪽 for문 

    i는 증가값 --i로 인해 1 감소되어 2이된 상태에서 종료값 i > j 조건을 만족하지 않으므로 반문을 빠져나옵니다. 

     

    다시 

    바깥쪽 for문 

    j는 증가값 --j로 인해 1 감소되어 1이된 상태에서 종료값 j>=0 조건에 만족하므로 안쪽 for문을 수행합니다. 

     

    안쪽 for문 

    i는 초기값 4을 가지고 종료값 i >j 조건을 만족하므로 

     

    numAry[j] += numAry[i];를 수행하여

    numAry[1]에 numAry[4]의 값을 누적합니다. 그러면 아래와 같이 numAry[1]의 값이 변경됩니다. 

     

    numAry[0]에는 0

    numAry[1]에는 3 

    numAry[2]에는 6 

    numAry[3]에는 3 

    numAry[4]에는 3이 저장되어 있습니다. 

     

    안쪽 for문 

    i는 증가값 --i로 인해 1 감소되어 3이된 상태에서 종료값 i > j 조건을 만족하므로 

     

    numAry[j] += numAry[i];를 수행하여 

    numAry[1]에 numAry[3]의 값을 누적합니다. 그러면 아래와 같이 numAry[1]의 값이 변경됩니다. 

     

    numAry[0]에는 0 

    numAry[1]에는 6 

    numAry[2]에는 6 

    numAry[3]에는 3 

    numAry[4]에는 3이 저장되어 있습니다. 

     

    안쪽 for문 

    i는 증가값 --i로 인해 1 감소되어 2가된 상태에서 종료값 i > j 조건을 만족하므로 

     

    numAry[j] += numAry[i];를 수행하여

    numAry[1]에 numAry[2]의 값을 누적합니다. 그러면 아래와 같이 numAry[1]의 값이 변경됩니다. 

     

    numAry[0]에는 0

    numAry[1]에는 12 

    numAry[2]에는 6 

    numAry[3]에는 3 

    numAry[4]에는 3이 저장되어 있습니다. 

     

    안쪽 for문 

    i는 증가값 --i로 인해 1 감소되어 1이된 상태에서 종료값 i > j 조건을 만족하지 않으므로 반문을 빠져나옵니다. 

     

    다시 

    바깥쪽 for문 

    j는 증가값 --j로 인해 1 감소되어 0이된 상태에서 종료값 j>=0 조건에 만족하므로 안쪽 for문을 수행합니다. 

     

    안쪽 for문 

    i는 초기값 4을 가지고 종료값 i >j 조건을 만족하므로 

     

    numAry[j] += numAry[i];를 수행하여

    numAry[0]에 numAry[4]의 값을 누적합니다. 그러면 아래와 같이 numAry[0]의 값이 변경됩니다. 

     

    numAry[0]에는 3

    numAry[1]에는 12 

    numAry[2]에는 6 

    numAry[3]에는 3 

    numAry[4]에는 3이 저장되어 있습니다. 

     

    안쪽 for문 

    i는 증가값 --i로 인해 1 감소되어 3이된 상태에서 종료값 i > j 조건을 만족하므로 

     

    numAry[j] += numAry[i];를 수행하여

    numAry[0]에 numAry[3]의 값을 누적합니다. 그러면 아래와 같이 numAry[0]의 값이 변경됩니다. 

     

    numAry[0]에는 6

    numAry[1]에는 12 

    numAry[2]에는 6 

    numAry[3]에는 3 

    numAry[4]에는 3이 저장되어 있습니다. 

     

    안쪽 for문 

    i는 증가값 --i로 인해 1 감소되어 2가된 상태에서 종료값 i > j 조건을 만족하므로 

     

    numAry[j] += numAry[i];를 수행하여

    numAry[0]에 numAry[2]의 값을 누적합니다. 그러면 아래와 같이 numAry[0]의 값이 변경됩니다. 

     

    numAry[0]에는 12

    numAry[1]에는 12 

    numAry[2]에는 6 

    numAry[3]에는 3 

    numAry[4]에는 3이 저장되어 있습니다. 

     

    안쪽 for문 

    i는 증가값 --i로 인해 1 감소되어 1이된 상태에서 종료값 i > j 조건을 만족하므로 

     

    numAry[j] += numAry[i];를 수행하여

    numAry[0]에 numAry[1]의 값을 누적합니다. 그러면 아래와 같이 numAry[0]의 값이 변경됩니다. 

     

    numAry[0]에는 24

    numAry[1]에는 12 

    numAry[2]에는 6 

    numAry[3]에는 3 

    numAry[4]에는 3이 저장되어 있습니다. 

     

    안쪽 for문 

    i는 증가값 --i로 인해 1 감소되어 1이된 상태에서 종료값 i > j 조건을 만족하지 않으므로 반문을 빠져나옵니다. 

     

    다시 

    바깥쪽 for문 

    j는 증가값 --j로 인해 1 감소되어 -1이된 상태에서 종료값 j>=0 조건에 만족하지 않으므로  반복문을 빠져나옵니다. 

     

    그래서 결국 최종적으로 nuymAry 배열의 값은 

    24 12 6 3 3이 되므로 화면에는 한 줄씩 출력되어 

     

    24

    12 

    이 된 것입니다 

     

    수행 과정을 535쪽 디비깅 표와 함께 이해하시면 쉽게 이해하실 수 있습니다.

     

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

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