his130   6년 전

heap 을 배열을 이용해서 구현해 봤습니다.


last 는 가장 말단 노드의 번호입니다.

root 노드는 1부터 시작하게 설정했습니다.


push 함수에서는

우선 절대값이 작으면 바꾸고, 절대값이 같으면 작은값으로 바꾸고


pop 함수에서는

l = 왼쪽자식 r=오른쪽자식 으로 

왼쪽자식이 없을때, 오른쪽 자식이 없을때, 둘다 없을 때, 둘다 있을 때로 나눠서 풀었습니다.

예제 케이스는 모두 나오는데 어디에서 오류가 날까요...

djm03178   6년 전

pop을 할 때는 루트와 마지막 노드를 교환한 뒤에 그 노드가 제자리를 찾아갈 때까지 반복적으로 자식 노드와 교환을 해줘야 되는데, 이 코드에서는 pop에서 i가 절대 증가하지 않고 루트 자리만 지키고 있기 때문에 문제가 됩니다.

간단한 반례로, 1부터 10까지 push 하고 계속 팝해보면 틀리는 때가 나옵니다.

his130   6년 전

for문에서 증가값을 비워놓고, 까먹어버렸네요!! 감사합니다.

댓글을 작성하려면 로그인해야 합니다.