앞서 질문드린 내용에 명쾌한 답변 감사합니다.
공부 중에 또 한가지 질문드립니다.
알고리즘 5장의 반배정(p.246) 순서도를 디버깅 하는게 잘 안되어서
도움을 요청합니다.
순서도 하단부 반복문에서
A(NMG) < > 0 조건에서 YES인 경우, i = i-1 을 치환하도록 되어 있는데
이처럼 A(NMG)배열에 값이 있는 경우, i = i-1 이후에 진행이 잘 안됩니다.
제가 예제에서 A(2) = 1 / A(4) = 2 / A(6) = 1 값을 넣은 이후의 디버깅 결과를 올려보면
i NMG A(NMG) CNT BAN
1 7 = 6+1 >6 이므로 A(1) 2 1
NMG=1 치환
2 2 = 1+1 A(2) >0 이므로
i = i-1 처리
1=2-1 3= 2+1 A(3)
2 4= 3+1 A(4) >0이므로
i = i-1처리
1=2-1 5= 4+1 A(5)
2 6 A(6) ......... 이런 식으로 진행되버리고 맙니다.
(반복문 i = 1,2,1 범위에서 계속 반복되어 버립니다.)
해답에는 i=0 으로 치환되는 단계 ( i = 1 -> 2에서 i=i-1처리후 -> 1 -> 0 순으로) 가 나오는데,
저의 디버깅에는 무슨 오류가 있는 것인가요?
A(2), A(4), A(6) 다음에 1반이 치환될 배열은 A(?) 인가요?
안녕하세요.
반 배정은 이미 배정된 반은 새롭게 배정되는 경우에서 제외하면서 진행되므로 뒤쪽으로 갈 수록 건너뛰는 경우가 많아 여러차례 반복된 후에 배정되므로 꼼꼼하게 체크하면서 진행하지 않으면 혼동될 수 있습니다.
색인 다른 펜을 이용해 이미 배정된 반과 배정될 반, 건너뛰는 것 등을 구분하면서 디버깅을 수행해 보세요.
앞에서부터 진행되는 과정 상에서 설명을 드려야 하다보니 디버깅 과정이 길어 서면을 통한 답변에 어려움이 있습니다.
이 부분에서 어려움을 겪는 경우가 대부분 배정 과정에서 일부 과정을 놓치는 경우가 대부분 이었습니다.
이점 염두에 두고 앞서 언급한 방법에 따라 차근히 시간을 두고 디버깅을 수행해 보세요.
오늘도 즐거운 하루 되세요.
"-
*2011-05-30 09:54:25
안녕하세요.
반 배정은 이미 배정된 반은 새롭게 배정되는 경우에서 제외하면서 진행되므로 뒤쪽으로 갈 수록 건너뛰는 경우가 많아 여러차례 반복된 후에 배정되므로 꼼꼼하게 체크하면서 진행하지 않으면 혼동될 수 있습니다.
색인 다른 펜을 이용해 이미 배정된 반과 배정될 반, 건너뛰는 것 등을 구분하면서 디버깅을 수행해 보세요.
앞에서부터 진행되는 과정 상에서 설명을 드려야 하다보니 디버깅 과정이 길어 서면을 통한 답변에 어려움이 있습니다.
이 부분에서 어려움을 겪는 경우가 대부분 배정 과정에서 일부 과정을 놓치는 경우가 대부분 이었습니다.
이점 염두에 두고 앞서 언급한 방법에 따라 차근히 시간을 두고 디버깅을 수행해 보세요.
오늘도 즐거운 하루 되세요.
"