• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

코드의 차이점이 뭔가요 ??

18.04.18 17:01 작성 조회수 121

0

while(j > 0 ) {

if( array[j] > value) {

array[j+1] = array[j]; // 왜 if를 쓰면 안되고, while(j>0 && array[j] > value) 로 하면 되는 것인가.

j--;

}

}

이거와 선생님 코드 의 차이가 뭔가요?? 이대로 하면 , 1,2 입력했을때는 잘 되는대, 그 다음부터는 입력만 하고 출력은 안되내요 ㅠㅠ

답변 1

답변을 작성해보세요.

0

김현지님의 프로필

김현지

2021.03.24

안녕하세요, 허인호님!

질문에 대한 답을 드리자면, while문은 해당 조건이 충족되지 않을 때까지 해당 블록을 계속 반복하여 실행합니다.

질문자님이 개발 환경을 어떻게 설정한지 모르니, 강의 코드로 예를 들겠습니다.

while (j >= 0 && data[j] > tmp)

위의 코드는, j가 양수 또는 0일때 뿐만 아니라 data[j]가 입력받은 정수보다 클 때 실행됩니다.

따라서, 현재 입력된 숫자가 data[j]보다 클 경우에는 실행되지 않습니다.

while(j>=0) {

      if (data[j] > tmp) {...}

}

질문자님이 작성해주신 위의 코드는, j가 양수라면 무조건 while문이 실행되는데, 입력받은 정수가 data[j]보다 클 때 while문을 탈출하는 break 문이 없습니다.

따라서, j가 양수이지만 입력받은 정수가 data[j]보다 클 경우에는 무한루프가 되는 것입니다.

if문을 활용하고 싶으시다면, 입력받은 정수가 data[j]보다 클 때의 분기처리를 해주어야합니다.

else문을 작성하여 break(반복문 완전 탈출) 또는 continue(나머지 코드를 스킵하고 처음으로 돌아가서 반복)를 맞게 작성해주시면 정상 작동할 것입니다.

혹시 궁금하신 점이 있다면 댓글 남겨주세요.

도움이 되었으면 좋겠습니다. :)