책 내용 질문하기
질문
도서
2018 시나공 정보처리기사 실기(산업기사 포함)
페이지
75
조회수
30
작성일
2018-09-19
작성자
탈퇴*원
첨부파일
75번 2번 문제 else if(i%4==0) hap -=i; 인데 i의 값을 hap에서 빼라는던 디버깅을 보면 hap 값이 왜 이렇게 나오는지 이해가 안되요
답변
2018-09-20 10:13:25

안녕하세요. 길벗 수험서 운영팀입니다.

hap -= i; 는 "hap = hap - i;"를 의미합니다.

hap += i; 는 "hap = hap + i;"를 의미합니다.

해당 수식의 if(i%4==0)을 볼 때 4의 배수인 경우 hap에서 i를 빼고, 그렇지 않은 경우 i를 더하는 것으로 보여집니다.

또한 i가 2씩 증가하는 것으로 볼 때, i는 2의 배수로 증가하게 되겠죠.

위를 그대로 생각해 보면 i는 2, 4, 6, 8... 이어지며, hap은 +2-4+6-8... 과 같은 수열의 값을 이어갈 것입니다.

위 수열의 값을 볼 때, hap은 디버깅표와 마찬가지로 2, -2, 4, -4, 6의 값이 나오게 되며, 6이 되었을 때 break를 만나 while문을 빠져나오게 됩니다.

정답의 디버깅표를 덮어두시고 직접 코드를 한줄씩 따라가며 디버깅표를 작성해보세요.

변수 값이 변화하는 과정이 한 눈에 들어오지 않으면, 정답의 디버깅표만을 참고하는 것으로는 코드를 정확히 이해하기 어렵습니다.

행복한 하루되세요.^^

  • *
    2018-09-20 10:13:25

    안녕하세요. 길벗 수험서 운영팀입니다.

    hap -= i; 는 "hap = hap - i;"를 의미합니다.

    hap += i; 는 "hap = hap + i;"를 의미합니다.

    해당 수식의 if(i%4==0)을 볼 때 4의 배수인 경우 hap에서 i를 빼고, 그렇지 않은 경우 i를 더하는 것으로 보여집니다.

    또한 i가 2씩 증가하는 것으로 볼 때, i는 2의 배수로 증가하게 되겠죠.

    위를 그대로 생각해 보면 i는 2, 4, 6, 8... 이어지며, hap은 +2-4+6-8... 과 같은 수열의 값을 이어갈 것입니다.

    위 수열의 값을 볼 때, hap은 디버깅표와 마찬가지로 2, -2, 4, -4, 6의 값이 나오게 되며, 6이 되었을 때 break를 만나 while문을 빠져나오게 됩니다.

    정답의 디버깅표를 덮어두시고 직접 코드를 한줄씩 따라가며 디버깅표를 작성해보세요.

    변수 값이 변화하는 과정이 한 눈에 들어오지 않으면, 정답의 디버깅표만을 참고하는 것으로는 코드를 정확히 이해하기 어렵습니다.

    행복한 하루되세요.^^

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