• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

우선순위 큐 관련 질문

22.01.30 14:54 작성 조회수 162

0

Pop부분에서

 if (_heap[left] > _heap[top] && left <= lastIndex)
                        top = left;

 if (_heap[right] > _heap[top] && right <= lastIndex)
                      top = right;

이렇게 적으면 인덱스가 초과 했다고 에러뜨고

강사님 입력하신 대로 

if (left <= lastIndex &&_heap[left] > _heap[top])
                        top = left;

if ( right <= lastIndex &&_heap[right] > _heap[top])
                      top = right;

입력하면 정상 출력되는데  조건문에서 AND니깐 상관없다고 생각이 드는데 왜 이렇게 서로 다른 결과가 나온는 건가요?

 

 

 

 

 

답변 1

답변을 작성해보세요.

0

차이가 있습니다.

if (A && B)라고 하면
A 먼저 판별하고 B가 이어서 판별되기 때문이죠.
범위 체크인 left <= lastIndex를 먼저 체크한 다음 뒷부분을 체크하기 때문에
A가 false면 B를 실행조차 하지 않습니다.
즉 범위를 벗어나는 문제를 미연에 방지할 수 있는 것이죠.

답변 감사합니다 

이번 기회에 조건문에 순서의 중요성을 알게되었습니다