강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

dudtjddl5329님의 프로필 이미지
dudtjddl5329

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘

우선순위 큐

우선순위 큐 관련 질문

작성

·

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님의 프로필 이미지
Rookiss
지식공유자

차이가 있습니다.

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

dudtjddl5329님의 프로필 이미지
dudtjddl5329
질문자

답변 감사합니다 

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

dudtjddl5329님의 프로필 이미지
dudtjddl5329

작성한 질문수

질문하기