안수진님 안녕하세요 기사친구입니다.
1행 1열부터 6열까지 입력이 되어 있는 상태에서 프로그램이 M>5에 오기 직전일 경우를 생각해봅시다.
현재 M=1, N=6, K=6입니다.
M>5가 아니므로 아래로 내려갑니다.
N=N+1 → N=7입니다. (M=1, N=7, K=6)
K=K+1 → K=7입니다. (M=1, N=7, K=7)
K>7이 아니므로 아래로 내려갑니다.
A(M,N)=K → A(1,7)=7이 입력됩니다.
N<7이 아니므로 아래로 내려갑니다.
K=M → K=1입니다. (M=1, N=7, K=1)
N=0입니다. 그리고 위로 올라갑니다. (M=1, N=0, K=1)
M=M+1 → M=2입니다. (M=2, N=0, K=1)
M>5가 아니므로 아래로 내려갑니다.
N=N+1 → N=1입니다. (M=2, N=1, K=1)
K=K+1 → K=2입니다. (M=2, N=1, K=2)
K>7이 아니므로 아래로 내려갑니다.
A(M,N)=K → A(2,1)=2가 입력됩니다.
...
이처럼 정상적으로 알고리즘이 진행됩니다.
안수진님의 디버깅 오류라면 N과 K는 각각 0, 1로 바뀐 후 둘 다 1증가 한 다음에 행렬에 입력됩니다.(N→0→1, K→1→2)
그 부분을 빠뜨리셨네요.
그 부분을 잘 생각하셔서 다시 디버깅해보시기 바랍니다.
감사합니다.
이건 인터넷에 돌아다니는 가답안 인데요,
제가 디버깅 한걸 올릴께요,
M N K
0 0 0
1 1 1 이렇게 될려면
2 2 4번은 K=M+1
3 3 5번은 N=1
4 4 이라고 해야 되지 않나요?
5 5
6 6
7 7
2 1 2
2 3
3 3
. .
. .
만약 위의 답처럼 한다면,
M N K
0 0 0
1 1 1
2 2
3 3
4 4
5 5
6 6
7 7
2 0 1
1 2
가 되어버리지 않나요?
(2,0)은 존재하지 않는데 말이죠,,
권우석 교수님 제발 속좀 시원하게 해주세요..
제가 잘못 이해한걸까요?