책 내용 질문하기
140쪽에 있는 알고리즘에 대한 디버깅 해답의 질문이 있습니다.
도서
2016 시나공 정보처리기사 실기
페이지
140
조회수
90
작성일
2016-04-07
작성자
첨부파일

140쪽 알고리즘에 안쪽 반복문이 k=i-1, 1, -1로 되어 있는데 이것의 의미는 k가 i-1에서 1이 될 때까지 -1씩 증가하면서 반복문을 수행하라는 뜻인데요. p596에 디버깅 결과를 보면 i=2일때 k값이 1부터 0까지 되어 있습니다. 여기서 질문이 있습니다. 위에 조건에 분명 k가 1이 될 때까지만 돌리라고 햇는데 왜 디버깅에는 k가 0값까지 되어 있는지 궁금합니다. 밑에 i가 4일 때도 k값이 또 0이 들어가 있습니다.

한 번 실수로 인쇄되어 있는 것 같지 않아서 질문 올립니다.

다른 분의 질문의 대한 대답으로 아래 내용을 답해 주셧는데요.

-------------------------------------------------

반복문은 다음과 같이 처리됩니다.

반복 k = 3, 1, -1 -> k를 3부터 1까지 -1씩 증가하면서 반복문을 실행

k는 처음 3을 가지고 반복문을 실행합니다.

그런 다음 증가치를 적용해 k가 2가 된 상태에서 종료 기준값(1)과 비교하죠 아직 기준값보다 작지 않으므로 반복문을 실행합니다.

그런 다음 증가치를 적용해 k가 1이 된 상태에서 종료 기준값(1)과 비교하죠 아직 기준값보다 작지 않으므로 반복문을 실행합니다.

그런 다음 증가치를 적용해 k가 0이 된 상태에서 종료 기준값(1)과 비교하죠 기준값보다 작으므로 반복문을 빠져나옵니다.

이때 반복변수 k의 값은 0인 상태로 빠져나옵니다.

반복문을 빠져나온 뒤 반복변수 k의 값을 사용하는 경우에는 반복문을 빠져나올때의 k 값이 중요합니다.

하지만 일반적으로 반복변수는 반복문 안에서만 사용하므로 디버깅 할 때도 마지막 반복변수 값은 무시하는 경우가 많죠.

이 알고리즘 처럼 반복변수 k의 값이 반복문을 빠져나온 뒤에도 계속 사용될 경우에는 반복문을 빠져 나올때의 반복 변수의 값이 중요합니다.

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

-------------------------------------------------

위 답변으로 적용해 보자면 i가 3일 때와 5일 때는 왜 1까지만 디버깅을 하고 빠져 나오는 건가요?

그리고 앞에서 했던 다른 모든 반복문들은 i= 1, 10, 1이면 1부터 10까지만 하고 빠져 나왓엇잖아요? 위 답변대로라면 i값이 11으로 가져고 나와야 맞는 것 아닌가요?

답변
2016-04-08 09:11:25

안녕하세요.

반복문을 끝까지 수행을 한다면 K가 0이 되어서 반복문을 빠져나오지만

반복문 중간의 A(K) > KEY 조건이 NO인 경우는 그 당시의 K 값으로 반복문이 빠져나옵니다.

즉 A(K)가 KEY보다 작거나 같은 경우에는 반복문 중간에 빠져나오게 되며, 그 당시 K의 값을 갖고 빠져나오게 되는 것이죠.

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

  • *
    2016-04-08 09:11:25

    안녕하세요.

    반복문을 끝까지 수행을 한다면 K가 0이 되어서 반복문을 빠져나오지만

    반복문 중간의 A(K) > KEY 조건이 NO인 경우는 그 당시의 K 값으로 반복문이 빠져나옵니다.

    즉 A(K)가 KEY보다 작거나 같은 경우에는 반복문 중간에 빠져나오게 되며, 그 당시 K의 값을 갖고 빠져나오게 되는 것이죠.

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

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