책 내용 질문하기
76쪽 4번 문제 이해가 잘 안 갑니다
도서
2017 시나공 정보처리기사 실기(산업기사 포함) 특별개정판
페이지
76
조회수
144
작성일
2017-05-10
작성자
탈퇴*원
첨부파일

while문에서 i를 2까지 돌려야 하는 것까진 알겠는데요

if문 식이 나머지가 1이 되지 않으면 hap은 0으로 계속 있어야 할텐데

왜 i가 9부터 는 hap이 7이 되나요?

나머지가 0이면 계속 hap은 0인거 아닌가요

해설 보니

i hap

10 0

9 7

8 11

7 12

이런식으로 되있는데 7하고 4에서만 나머지가 1인건데 왜

7에서는 hap이 7이 아니고 6부터는 왜 디버깅 결과는 없는건지

이해가 안 가네요

답변
2017-05-15 10:39:28

안녕하세요.

i가 10, hap은 0으로 시작합니다.

while (i > 1) 조건을 만족하므로 while문을 진입합니다.

i--에 의해 i는 9가 됩니다.

if( i%3 == 1) i가 9이므로 3으로 나눈 나머지는 0이므로 조건을 만족하지 않습니다.

while (i > 1) 조건을 만족하므로 while문을 반복합니다.

i--에 의해 i는 8이 됩니다.

if( i%3 == 1) i가 8이므로 3으로 나눈 나머지는 2이므로 조건을 만족하지 않습니다.

while (i > 1) 조건을 만족하므로 while문을 반복합니다.

i--에 의해 i는 7이 됩니다.

if( i%3 == 1) i가 7이므로 3으로 나눈 나머지는 1이므로 조건을 만족합니다.

hap += i, 즉 hap에 i를 누적하므로 hap은 7이 됩니다.

while (i > 1) 조건을 만족하므로 while문을 반복합니다.

i--에 의해 i는 6이 됩니다.

if( i%3 == 1) i가 6이므로 3으로 나눈 나머지는 0이므로 조건을 만족하지 않습니다.

while (i > 1) 조건을 만족하므로 while문을 반복합니다.

i--에 의해 i는 5가 됩니다.

if( i%3 == 1) i가 5이므로 3으로 나눈 나머지는 2이므로 조건을 만족하지 않습니다.

while (i > 1) 조건을 만족하므로 while문을 반복합니다.

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

if( i%3 == 1) i가 4이므로 3으로 나눈 나머지는 1이므로 조건을 만족합니다.

hap += i, 즉 hap에 i를 누적합니다. hap은 7이었는데, 4를 누적하므로 hap은 11이 됩니다.

while (i > 1) 조건을 만족하므로 while문을 반복합니다.

i--에 의해 i는 3이 됩니다.

if( i%3 == 1) i가 3이므로 3으로 나눈 나머지는 0이므로 조건을 만족하지 않습니다.

while (i > 1) 조건을 만족하므로 while문을 반복합니다.

i--에 의해 i는 2가 됩니다.

if( i%3 == 1) i가 2이므로 3으로 나눈 나머지는 2이므로 조건을 만족하지 않습니다.

while (i > 1) 조건을 만족하므로 while문을 반복합니다.

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

if( i%3 == 1) i가 1이므로 3으로 나눈 나머지는 1이므로 조건을 만족합니다.

hpa += i, 즉 hap에 i를 누적합니다. hap은 11이었는데, 1을 누적하므로 hap은 12가 됩니다.

while (i > 1) 조건을 만족하지 않으므로 while문을 빠져나옵니다.

hap 12가 출력됩니다.

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

  • *
    2017-05-15 10:39:28

    안녕하세요.

    i가 10, hap은 0으로 시작합니다.

    while (i > 1) 조건을 만족하므로 while문을 진입합니다.

    i--에 의해 i는 9가 됩니다.

    if( i%3 == 1) i가 9이므로 3으로 나눈 나머지는 0이므로 조건을 만족하지 않습니다.

    while (i > 1) 조건을 만족하므로 while문을 반복합니다.

    i--에 의해 i는 8이 됩니다.

    if( i%3 == 1) i가 8이므로 3으로 나눈 나머지는 2이므로 조건을 만족하지 않습니다.

    while (i > 1) 조건을 만족하므로 while문을 반복합니다.

    i--에 의해 i는 7이 됩니다.

    if( i%3 == 1) i가 7이므로 3으로 나눈 나머지는 1이므로 조건을 만족합니다.

    hap += i, 즉 hap에 i를 누적하므로 hap은 7이 됩니다.

    while (i > 1) 조건을 만족하므로 while문을 반복합니다.

    i--에 의해 i는 6이 됩니다.

    if( i%3 == 1) i가 6이므로 3으로 나눈 나머지는 0이므로 조건을 만족하지 않습니다.

    while (i > 1) 조건을 만족하므로 while문을 반복합니다.

    i--에 의해 i는 5가 됩니다.

    if( i%3 == 1) i가 5이므로 3으로 나눈 나머지는 2이므로 조건을 만족하지 않습니다.

    while (i > 1) 조건을 만족하므로 while문을 반복합니다.

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

    if( i%3 == 1) i가 4이므로 3으로 나눈 나머지는 1이므로 조건을 만족합니다.

    hap += i, 즉 hap에 i를 누적합니다. hap은 7이었는데, 4를 누적하므로 hap은 11이 됩니다.

    while (i > 1) 조건을 만족하므로 while문을 반복합니다.

    i--에 의해 i는 3이 됩니다.

    if( i%3 == 1) i가 3이므로 3으로 나눈 나머지는 0이므로 조건을 만족하지 않습니다.

    while (i > 1) 조건을 만족하므로 while문을 반복합니다.

    i--에 의해 i는 2가 됩니다.

    if( i%3 == 1) i가 2이므로 3으로 나눈 나머지는 2이므로 조건을 만족하지 않습니다.

    while (i > 1) 조건을 만족하므로 while문을 반복합니다.

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

    if( i%3 == 1) i가 1이므로 3으로 나눈 나머지는 1이므로 조건을 만족합니다.

    hpa += i, 즉 hap에 i를 누적합니다. hap은 11이었는데, 1을 누적하므로 hap은 12가 됩니다.

    while (i > 1) 조건을 만족하지 않으므로 while문을 빠져나옵니다.

    hap 12가 출력됩니다.

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

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