반복문의 경우 4명을 건너뛰고 반을 배정하려는 목적인건 알겠습니다.
건너뛰는 4명내에 반을 배정받은 사람이 있다면 이또한 건너뛴다는 것도 알겠습니다.
반복문 처음 시작하게 되면 i=1로 시작하게 되고
23번을 적용받아(i=i-1) i가 0이 된다면
반복문 1회 마치고 2번째 반복문이 시작시 1씩 증가이기 때문에 i는 다시 1이 되는건가요?
아니면 i=2가 되어 4회만 반복하게 되나요.
답으로 유추해보면 예를 들어
4명을 건너뛰는중 2명이 반을 이미 배정받았다면 저 반복문을 4회가 아닌 6회를 반복하기 위해
23번을 만든건가요?
안녕하세요.
i는 배정되는 반의 배열 위치입니다.
총 21명이 1~3반을 배정받게 됩니다.
첫번째 반복문은 배열의 모든 위치, 즉 21개의 배열에 0을 저장하는 과정입니다.
이후 반의 위치는 i가 아니라 NMG에 의해 결정됩니다.
검은색 동그라미 14번에서 수행되고
마지막 반복문의 i는 다음 반을 배정하기 위해 배정되지 않은 학생 4명을 건너뛰는 과정입니다.
초기 반복문 i와는 관계 없는 별개의 작업을 수행하는 i입니다.
이미 배정된 반이 있는 경우, 즉 해당 배열의 값이 0이 아닌 경우(처음에 0으로 모두 초기화 했으므로 0이 아닌 경우는 이미 반이 배정된 경우임) 건너뛰는 4명에서 제외하기 위해 건너뛰는 4명인 i를 -1하여 건너뛰는 4명에서 -1을 하는 것입니다.
이렇게 하면 뒤로 갈 수록 -1하는 경우가 많아져 실질적으로는 무수히 반복하게 되는데, 이 과정에서 잘못 따라가다가 실수하면 어려워 지므로 서로 다른 색의 펜을 준비하여 배정되는 반을 표기하면서 차분히 디버깅을 수행해야 합니다.
오늘도 즐거운 하루 되세요.
-
*2016-02-11 09:19:41
안녕하세요.
i는 배정되는 반의 배열 위치입니다.
총 21명이 1~3반을 배정받게 됩니다.
첫번째 반복문은 배열의 모든 위치, 즉 21개의 배열에 0을 저장하는 과정입니다.
이후 반의 위치는 i가 아니라 NMG에 의해 결정됩니다.
검은색 동그라미 14번에서 수행되고
마지막 반복문의 i는 다음 반을 배정하기 위해 배정되지 않은 학생 4명을 건너뛰는 과정입니다.
초기 반복문 i와는 관계 없는 별개의 작업을 수행하는 i입니다.
이미 배정된 반이 있는 경우, 즉 해당 배열의 값이 0이 아닌 경우(처음에 0으로 모두 초기화 했으므로 0이 아닌 경우는 이미 반이 배정된 경우임) 건너뛰는 4명에서 제외하기 위해 건너뛰는 4명인 i를 -1하여 건너뛰는 4명에서 -1을 하는 것입니다.
이렇게 하면 뒤로 갈 수록 -1하는 경우가 많아져 실질적으로는 무수히 반복하게 되는데, 이 과정에서 잘못 따라가다가 실수하면 어려워 지므로 서로 다른 색의 펜을 준비하여 배정되는 반을 표기하면서 차분히 디버깅을 수행해야 합니다.
오늘도 즐거운 하루 되세요.