mime123   3년 전

뭐가 문젠지 모르겠습니다.

ga함수는 리턴값이 a만나오고 zar함수는 반환값이 없나봅니다. 왜이러죠?ㅠ

cozyyg   3년 전

while문 부분을 살짝 수정하면 되는 것 같습니다. a/z==0일 때 루프에서 빠져나와야 하는데, 조건문이 반대가 된 것 같아요.

mime123   3년 전

오 나오긴하는데

맨마지막에 10002 라는 숫자가 뜹니다

i가 분명 10000까지밖에없는데 이게 왜뜨는지 아시나요..?

mime123   3년 전

for문에 num으로 쓰면 10002 가 나오고 10000 숫자로 바꿔쓰면 올바른 정답이 나오네요

cozyyg   3년 전

num 값이 바뀌어버린 것인데, 이거는 Undefined Behavior(정의되지 않은 동작) 때문입니다. k=ga(i)에서 k는 10000을 넘어가버릴 수 있습니다. 이 때 ka[k-1]은 배열의 범위를 넘어서서 접근을 하는 경우가 생깁니다. 이런 경우 정의되지 않은 동작을 하므로, num의 값이 바뀌든 무슨 일이 일어나든 할 말이 없습니다. ka[k-1]에 접근하기 전 k의 범위를 확인해야 합니다.

mime123   3년 전

감사합니다!

댓글을 작성하려면 로그인해야 합니다.