책 내용 질문하기
질문있습니다.
도서
2018 시나공 정보처리기사 실기(산업기사 포함)
페이지
76
조회수
36
작성일
2018-07-06
작성자
탈퇴*원
첨부파일

10부터 대입하여 3으로나눴을떄 나머지가 1이면 hap + i = hap 하라고 되있습니다.

근데 맨첨에 나와져있는게 i = 10 이고 hap = 0 이라서

10일때는 0 으로되있어서 i = 10 hap = 0 으로 대입하고 시작했습니다.

-1하여 차례대로 값이나올때까지 계산하는걸로알고있어서 i = 9 를대입하니 밑의 식의 값이 아니라서 hap = 0 을주고 맨첨으로 올라와서 다시 -1을한값 8을 대입하는것으로 쭉해서 7을대입하니 3으로나눈후 나머지가 1이여서

식아래에있는 hap += i 를 한다음 값을 출력을하면 7인데 왜 답은 12라고 나와있을까요??

이해가안가는부분은 if ( i % 3 == 1) 이값이 일치하면 그밑의 식 hap += i; 을 한다음 출력하면 되는거아닌가요 ?

답지를보면 9를 대입하면 저식에 맞지않는데 hap값이 7 이 왜나오는지 모르겠습니다. 해결좀부탁드립니다. 1시간째 풀다가 이해가안가서 지친맘으로 올려봅니다.

답변
2018-07-09 09:26:02

안녕하세요.


i는 10을 hap은 0으로 가지고 시작합니다.


while 문은 i가 1보다 큰 동안 반복합니다. 즉 1과 같으면 종료됩니다.

i-- 에 의해 i는 1 감소합니다. i는 9가 됩니다.

i % 3, 즉 9 % 3의 나머지는 0입니다. 그러므로 조건을 만족하지 않습니다.

다시 while문을 반복합니다.

i-- 에 의해 i는 1 감소합니다. i는 8이 됩니다.

i % 3, 즉 8 % 3의 나머지는 2입니다. 그러므로 조건을 만족하지 않습니다.

다시 while문을 반복합니다.

i-- 에 의해 i는 1 감소합니다. i는 7이 됩니다.

i % 3, 즉 7 % 3의 나머지는 1입니다. 조건을 만족하므로 hap에 i를 누적합니다. hap은 7이 됩니다.

다시 while문을 반복합니다.

i-- 에 의해 i는 1 감소합니다. i는 6이 됩니다.

i % 3, 즉 6 % 3의 나머지는 0입니다. 그러므로 조건을 만족하지 않습니다.

다시 while문을 반복합니다.

i-- 에 의해 i는 1 감소합니다. i는 5가 됩니다.

i % 3, 즉 5 % 3의 나머지는 2입니다. 그러므로 조건을 만족하지 않습니다.

다시 while문을 반복합니다.

i-- 에 의해 i는 1 감소합니다. i는 4가 됩니다.

i % 3, 즉 4 % 3의 나머지는 1입니다. 조건을 만족하므로 hap에 i를 누적합니다. hap은 기존 7에 4를 더해 11이 됩니다.

다시 while문을 반복합니다.

i-- 에 의해 i는 1 감소합니다. i는 3이 됩니다.

i % 3, 즉 3 % 3의 나머지는 0입니다. 그러므로 조건을 만족하지 않습니다.

다시 while문을 반복합니다.

i-- 에 의해 i는 1 감소합니다. i는 2가 됩니다.

i % 3, 즉 2 % 3의 나머지는 2입니다. 나눠지는 값이 나누는 값보다 작으면 몫은 0이 되고 나눠지는 값이 그대로 나머지가 됩니다.

나머지가 2이므로 조건을 만족하지 않습니다.

다시 while문을 반복합니다.

i-- 에 의해 i는 1 감소합니다. i는 1이 됩니다.

i % 3, 즉 1 % 3의 나머지는 1입니다. 조건을 만족하므로 hap에 i를 누적합니다. hap은 기존 11에 1을 더해 12가 됩니다.

i가 1이므로 while문을 빠져나온 후 hap을 출력합니다.

출력되는 값은 12가 됩니다.

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

  • *
    2018-07-09 09:26:02

    안녕하세요.


    i는 10을 hap은 0으로 가지고 시작합니다.


    while 문은 i가 1보다 큰 동안 반복합니다. 즉 1과 같으면 종료됩니다.

    i-- 에 의해 i는 1 감소합니다. i는 9가 됩니다.

    i % 3, 즉 9 % 3의 나머지는 0입니다. 그러므로 조건을 만족하지 않습니다.

    다시 while문을 반복합니다.

    i-- 에 의해 i는 1 감소합니다. i는 8이 됩니다.

    i % 3, 즉 8 % 3의 나머지는 2입니다. 그러므로 조건을 만족하지 않습니다.

    다시 while문을 반복합니다.

    i-- 에 의해 i는 1 감소합니다. i는 7이 됩니다.

    i % 3, 즉 7 % 3의 나머지는 1입니다. 조건을 만족하므로 hap에 i를 누적합니다. hap은 7이 됩니다.

    다시 while문을 반복합니다.

    i-- 에 의해 i는 1 감소합니다. i는 6이 됩니다.

    i % 3, 즉 6 % 3의 나머지는 0입니다. 그러므로 조건을 만족하지 않습니다.

    다시 while문을 반복합니다.

    i-- 에 의해 i는 1 감소합니다. i는 5가 됩니다.

    i % 3, 즉 5 % 3의 나머지는 2입니다. 그러므로 조건을 만족하지 않습니다.

    다시 while문을 반복합니다.

    i-- 에 의해 i는 1 감소합니다. i는 4가 됩니다.

    i % 3, 즉 4 % 3의 나머지는 1입니다. 조건을 만족하므로 hap에 i를 누적합니다. hap은 기존 7에 4를 더해 11이 됩니다.

    다시 while문을 반복합니다.

    i-- 에 의해 i는 1 감소합니다. i는 3이 됩니다.

    i % 3, 즉 3 % 3의 나머지는 0입니다. 그러므로 조건을 만족하지 않습니다.

    다시 while문을 반복합니다.

    i-- 에 의해 i는 1 감소합니다. i는 2가 됩니다.

    i % 3, 즉 2 % 3의 나머지는 2입니다. 나눠지는 값이 나누는 값보다 작으면 몫은 0이 되고 나눠지는 값이 그대로 나머지가 됩니다.

    나머지가 2이므로 조건을 만족하지 않습니다.

    다시 while문을 반복합니다.

    i-- 에 의해 i는 1 감소합니다. i는 1이 됩니다.

    i % 3, 즉 1 % 3의 나머지는 1입니다. 조건을 만족하므로 hap에 i를 누적합니다. hap은 기존 11에 1을 더해 12가 됩니다.

    i가 1이므로 while문을 빠져나온 후 hap을 출력합니다.

    출력되는 값은 12가 됩니다.

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

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