-
카테고리
-
세부 분야
게임 프로그래밍
-
해결 여부
미해결
우선순위 큐 관련 질문
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니깐 상관없다고 생각이 드는데 왜 이렇게 서로 다른 결과가 나온는 건가요?
답변을 작성해보세요.
0
Rookiss
지식공유자2022.01.30
차이가 있습니다.
if (A && B)라고 하면
A 먼저 판별하고 B가 이어서 판별되기 때문이죠.
범위 체크인 left <= lastIndex를 먼저 체크한 다음 뒷부분을 체크하기 때문에
A가 false면 B를 실행조차 하지 않습니다.
즉 범위를 벗어나는 문제를 미연에 방지할 수 있는 것이죠.
답변 1