inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)

10. 최소힙

heap 구조에 대한 질문입니다!

해결된 질문

373

북극곰

작성한 질문수 1

0

heappush를 사용하면 리스트인 a가 heap의 형태로 바뀌게 되는건지 궁금합니다!

교수님 풀이와는 다르게 heappush를 사용하지 않고 리스트에 append 하는 형식으로 값을 추가한 후에 heappop을 사용하게 되면 최솟값이 나오지않는것같습니다.

heap list

답변 1

1

김태원

안녕하세요^^

heappush(a, x)를 하면 a를 단순 리스트로 생각하지 않고 a라는 1차원 리스트가 이진트리 형식인 힙구조라고 생각합니다. 1차원 리스트를 힙구조로 생각하고 컨트롤 할 수 있습니다. 1번 인덱스 값의 왼쪽 자식 노드는 2번인덱스, 오른쪽 자식 노드는 3인덱스, 2번 인덱스 값의 왼쪽 자식 노드는 4번 인덱스, 오른쪽 자식 노드는 5번 인덱스 이런식으로 생각합니다. 즉 i번 인덱스 값의 왼쪽 자식은 i*2인덱스, 오른쪽 자식은 i*2+1 인덱스와 같이 계산합니다.

즉 heappush(a, x)는 a리스트를 이진트리 힙구조라 행각하고, 이진트리인 힙구조에서 x숫자가 위치할 인덱스 위치를 upheap 방식(현재 x노드와 x의 부모 노드를 비교해서 최소힙이 되기 위한 x값의 위치 계산)으로 찾아 x가 그 자리에 넣어줍니다.

List<Map<String, dynamic>> in type cast 에러가 계속 발생됩니다.

0

382

2

List 출력오류 관련 문의 드립니다.

0

158

1

Compressed OOP 조건에 따른 ES Heap Size 제약

0

708

1

리스트를 한번에 업데이트 하고자 할 때 아래와 같은 방법 말고 다른 게 있을까요?

0

777

1

Metaspace에 대해서

2

1081

1

list로 형변환 할때 'list' object is not callable 오류가 나요

0

637

1

list #2강의 18:48~ 중간 삽입/삭제와 임의접근의 모순

0

394

1

리스트 삭제 처리에 대한 질문 있습니다.

0

249

1

리스트를 만드는 방법

0

277

1

if 문을 사용하여 리스트에 존재하는지 찾기

0

385

0

왜 list가 아닌 None이 출력되나요?

0

2964

2

안녕하세요. 리턴 타입 질문 드립니다.

0

312

1

range가 list가 맞나요?

1

298

1

quiz 4 관련 list에서 특정값을 빼내는 함수 또는 set에서 shuffle할 수 있는 함수가 있나요?

0

317

1