책 내용 질문하기
문제3번
도서
2019 시나공 정보처리기사 실기(산업기사포함)
페이지
76
조회수
881
작성일
2019-03-12
작성자
탈퇴*원
디버깅결과 사진첨부같이 나왔는데 제가 hap이 10나왔을때 답지는 7이더라구요 i가 10일때 3으로 나눈 나머지가 1이므로 hap은 hap+i 즉 0+10=10 되는거아닌가요? 설명부탁드려요~~
답변
2019-03-13 11:05:27

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

 

디버깅표는 기본적으로 변수의 변화하는 값들의 나열일뿐 각 회전 순서대로 적히지 않는다는 점에 주의하세요.

 

먼저 i가 10이 되어 while(i>1) 을 통과하여 i--를 먼저 만납니다.

i가 9가 되겠죠.

다음 if(i&3 ==1) 을 체크하는데, 이 때 i는 9이므로 10이 들어갈 일이 없습니다.

 

if(i&3 == 1)에 가장 처음 들어가는 i값이 9이므로 9 이하 중 3의 배수+1이 되는 값들인 7, 4, 1이 합산되어 결과가 나오게 되죠. 

디버깅표를 작성할 때는 알고리즘을 파악하고 이해한 대로 푸는 것이 아닌 코드를 한줄 한줄 따라간다는 느낌으로 적어야 좀 더 정확한 디버깅표가 작성됩니다.

 

행복한 하루되세요 :)

  • 관리자
    2019-03-13 11:05:27

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

     

    디버깅표는 기본적으로 변수의 변화하는 값들의 나열일뿐 각 회전 순서대로 적히지 않는다는 점에 주의하세요.

     

    먼저 i가 10이 되어 while(i>1) 을 통과하여 i--를 먼저 만납니다.

    i가 9가 되겠죠.

    다음 if(i&3 ==1) 을 체크하는데, 이 때 i는 9이므로 10이 들어갈 일이 없습니다.

     

    if(i&3 == 1)에 가장 처음 들어가는 i값이 9이므로 9 이하 중 3의 배수+1이 되는 값들인 7, 4, 1이 합산되어 결과가 나오게 되죠. 

    디버깅표를 작성할 때는 알고리즘을 파악하고 이해한 대로 푸는 것이 아닌 코드를 한줄 한줄 따라간다는 느낌으로 적어야 좀 더 정확한 디버깅표가 작성됩니다.

     

    행복한 하루되세요 :)

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