인프런 커뮤니티 질문&답변
우선순위 큐 관련 질문
작성
·
267
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
Rookiss
지식공유자
차이가 있습니다.
if (A && B)라고 하면
A 먼저 판별하고 B가 이어서 판별되기 때문이죠.
범위 체크인 left <= lastIndex를 먼저 체크한 다음 뒷부분을 체크하기 때문에
A가 false면 B를 실행조차 하지 않습니다.
즉 범위를 벗어나는 문제를 미연에 방지할 수 있는 것이죠.






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