inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Python 응용 - 파이썬으로 배우는 자료구조와 알고리즘

heap 생성, 힙 아이템 삭제 및 수정, 힙의 최대, 최소 값 구하기

showHeap 파일 소스코드좀 부탁해요

842

oncore

작성한 질문수 1

0

강의가 중간에 끊켰는지 ? 갑자기 아무설명도 없다가 showHeap이 나와서 강의 진행하는데 소스 코드좀 부탁드립니다

python

답변 15

0

MyungHak

'''

피이썬 3.x 버젼과 2.x버젼의 차이가 있으니 유의해주시기 바랍니다.

이 코드는 이전 강의에서 댓글로 써주신 분 것을 가져온거입니다

import math

from io import StringIO, BytesIO

3.x 는 String IO,

2.x는 BytesIO 사용바람

def show_tree(tree, total_width=36, fill= ' '):

Pretty-print a tree

output = StringIO() # for 3.x

#output = BytesIO() # for 2.x

last_row = -1

for i, n in enumerate(tree):

if i:

row = int(math.floor(math.log(i+1, 2))) # 지수, 밑

# i =0부터 시작돼서 i+1, 이진트리기떄문에 밑은 2

else:

row =0

if row!= last_row:

output.write('\n')

columns = 2**row

col_width = int(math.floor((total_width * 1.0) / columns ))

output.write(str(n).center(col_width, fill))

last_row = row

print(output.getvalue())

print('-'*total_width)

print()

return

'''

0

MyungHak

파이썬 2.x버젼과 3.x버젼이 차이가 있으니 주의해 주세요

그리고 이 코드는 이 전 강의에서 댓글로 소스코드를 올려주신 분 것 입니다.

"""

import math

from io import StringIO, BytesIO

3.x 는 String IO,

2.x는 BytesIO 사용바람

def show_tree(tree, total_width=36, fill= ' '):

Pretty-print a tree

#output = StringIO() # for 3.x

output = BytesIO() # for 2.x

last_row = -1

for i, n in enumerate(tree):

if i:

row = int(math.floor(math.log(i+1, 2))) # 지수, 밑

# i =0부터 시작돼서 i+1, 이진트리기떄문에 밑은 2

else:

row =0

if row!= last_row:

output.write('\n')

columns = 2**row

col_width = int(math.floor((total_width * 1.0) / columns ))

output.write(str(n).center(col_width, fill))

last_row = row

print(output.getvalue())

print('-'*total_width)

print()

return

"""

0

MyungHak

파이썬 2.x버젼과 3.x버젼이 차이가 있으니 주의해 주세요

그리고 이 코드는 이 전 강의에서 댓글로 소스코드를 올려주신 분 것 입니다.

"""

import math

from io import StringIO, BytesIO

3.x 는 String IO,

2.x는 BytesIO 사용바람

def show_tree(tree, total_width=36, fill= ' '):

Pretty-print a tree

#output = StringIO() # for 3.x

output = BytesIO() # for 2.x

last_row = -1

for i, n in enumerate(tree):

if i:

row = int(math.floor(math.log(i+1, 2))) # 지수, 밑

# i =0부터 시작돼서 i+1, 이진트리기떄문에 밑은 2

else:

row =0

if row!= last_row:

output.write('\n')

columns = 2**row

col_width = int(math.floor((total_width * 1.0) / columns ))

output.write(str(n).center(col_width, fill))

last_row = row

print(output.getvalue())

print('-'*total_width)

print()

return

"""

0

MyungHak

파이썬 2.x버젼과 3.x버젼이 차이가 있으니 주의해 주세요

그리고 이 코드는 이 전 강의에서 댓글로 소스코드를 올려주신 분 것 입니다.

"""

import math

from io import StringIO, BytesIO

3.x 는 String IO,

2.x는 BytesIO 사용바람

def show_tree(tree, total_width=36, fill= ' '):

Pretty-print a tree

#output = StringIO() # for 3.x

output = BytesIO() # for 2.x

last_row = -1

for i, n in enumerate(tree):

if i:

row = int(math.floor(math.log(i+1, 2))) # 지수, 밑

# i =0부터 시작돼서 i+1, 이진트리기떄문에 밑은 2

else:

row =0

if row!= last_row:

output.write('\n')

columns = 2**row

col_width = int(math.floor((total_width * 1.0) / columns ))

output.write(str(n).center(col_width, fill))

last_row = row

print(output.getvalue())

print('-'*total_width)

print()

return

"""

0

MyungHak

파이썬 2.x버젼과 3.x버젼이 차이가 있으니 주의해 주세요

그리고 이 코드는 이 전 강의에서 댓글로 소스코드를 올려주신 분 것 입니다.

"""

import math

from io import StringIO, BytesIO

3.x 는 String IO,

2.x는 BytesIO 사용바람

def show_tree(tree, total_width=36, fill= ' '):

Pretty-print a tree

#output = StringIO() # for 3.x

output = BytesIO() # for 2.x

last_row = -1

for i, n in enumerate(tree):

if i:

row = int(math.floor(math.log(i+1, 2))) # 지수, 밑

# i =0부터 시작돼서 i+1, 이진트리기떄문에 밑은 2

else:

row =0

if row!= last_row:

output.write('\n')

columns = 2**row

col_width = int(math.floor((total_width * 1.0) / columns ))

output.write(str(n).center(col_width, fill))

last_row = row

print(output.getvalue())

print('-'*total_width)

print()

return

"""

0

MyungHak

파이썬 2.x버젼과 3.x버젼이 차이가 있으니 주의해 주세요

그리고 이 코드는 이 전 강의에서 댓글로 소스코드를 올려주신 분 것 입니다.

"""

import math

from io import StringIO, BytesIO

3.x 는 String IO,

2.x는 BytesIO 사용바람

def show_tree(tree, total_width=36, fill= ' '):

Pretty-print a tree

#output = StringIO() # for 3.x

output = BytesIO() # for 2.x

last_row = -1

for i, n in enumerate(tree):

if i:

row = int(math.floor(math.log(i+1, 2))) # 지수, 밑

# i =0부터 시작돼서 i+1, 이진트리기떄문에 밑은 2

else:

row =0

if row!= last_row:

output.write('\n')

columns = 2**row

col_width = int(math.floor((total_width * 1.0) / columns ))

output.write(str(n).center(col_width, fill))

last_row = row

print(output.getvalue())

print('-'*total_width)

print()

return

"""

0

MyungHak

파이썬 2.x버젼과 3.x버젼이 차이가 있으니 주의해 주세요

그리고 이 코드는 이 전 강의에서 댓글로 소스코드를 올려주신 분 것 입니다.

"""

import math

from io import StringIO, BytesIO

3.x 는 String IO,

2.x는 BytesIO 사용바람

def show_tree(tree, total_width=36, fill= ' '):

Pretty-print a tree

#output = StringIO() # for 3.x

output = BytesIO() # for 2.x

last_row = -1

for i, n in enumerate(tree):

if i:

row = int(math.floor(math.log(i+1, 2))) # 지수, 밑

# i =0부터 시작돼서 i+1, 이진트리기떄문에 밑은 2

else:

row =0

if row!= last_row:

output.write('\n')

columns = 2**row

col_width = int(math.floor((total_width * 1.0) / columns ))

output.write(str(n).center(col_width, fill))

last_row = row

print(output.getvalue())

print('-'*total_width)

print()

return

"""

0

MyungHak

파이썬 2.x버젼과 3.x버젼이 차이가 있으니 주의해 주세요

그리고 이 코드는 이 전 강의에서 댓글로 소스코드를 올려주신 분 것 입니다.

"""

import math

from io import StringIO, BytesIO

3.x 는 String IO,

2.x는 BytesIO 사용바람

def show_tree(tree, total_width=36, fill= ' '):

Pretty-print a tree

#output = StringIO() # for 3.x

output = BytesIO() # for 2.x

last_row = -1

for i, n in enumerate(tree):

if i:

row = int(math.floor(math.log(i+1, 2))) # 지수, 밑

# i =0부터 시작돼서 i+1, 이진트리기떄문에 밑은 2

else:

row =0

if row!= last_row:

output.write('\n')

columns = 2**row

col_width = int(math.floor((total_width * 1.0) / columns ))

output.write(str(n).center(col_width, fill))

last_row = row

print(output.getvalue())

print('-'*total_width)

print()

return

"""

0

MyungHak

파이썬 2.x버젼과 3.x버젼이 차이가 있으니 주의해 주세요

그리고 이 코드는 이 전 강의에서 댓글로 소스코드를 올려주신 분 것 입니다.

"""

import math

from io import StringIO, BytesIO

3.x 는 String IO,

2.x는 BytesIO 사용바람

def show_tree(tree, total_width=36, fill= ' '):

Pretty-print a tree

#output = StringIO() # for 3.x

output = BytesIO() # for 2.x

last_row = -1

for i, n in enumerate(tree):

if i:

row = int(math.floor(math.log(i+1, 2))) # 지수, 밑

# i =0부터 시작돼서 i+1, 이진트리기떄문에 밑은 2

else:

row =0

if row!= last_row:

output.write('\n')

columns = 2**row

col_width = int(math.floor((total_width * 1.0) / columns ))

output.write(str(n).center(col_width, fill))

last_row = row

print(output.getvalue())

print('-'*total_width)

print()

return

"""

0

MyungHak

파이썬 2.x버젼과 3.x버젼이 차이가 있으니 주의해 주세요

그리고 이 코드는 이 전 강의에서 댓글로 소스코드를 올려주신 분 것 입니다.

"""

import math

from io import StringIO, BytesIO

3.x 는 String IO,

2.x는 BytesIO 사용바람

def show_tree(tree, total_width=36, fill= ' '):

Pretty-print a tree

#output = StringIO() # for 3.x

output = BytesIO() # for 2.x

last_row = -1

for i, n in enumerate(tree):

if i:

row = int(math.floor(math.log(i+1, 2))) # 지수, 밑

# i =0부터 시작돼서 i+1, 이진트리기떄문에 밑은 2

else:

row =0

if row!= last_row:

output.write('\n')

columns = 2**row

col_width = int(math.floor((total_width * 1.0) / columns ))

output.write(str(n).center(col_width, fill))

last_row = row

print(output.getvalue())

print('-'*total_width)

print()

return

"""

0

MyungHak

파이썬 2.x버젼과 3.x버젼이 차이가 있으니 주의해 주세요

그리고 이 코드는 이 전 강의에서 댓글로 소스코드를 올려주신 분 것 입니다.

"""

import math

from io import StringIO, BytesIO

3.x 는 String IO,

2.x는 BytesIO 사용바람

def show_tree(tree, total_width=36, fill= ' '):

Pretty-print a tree

#output = StringIO() # for 3.x

output = BytesIO() # for 2.x

last_row = -1

for i, n in enumerate(tree):

if i:

row = int(math.floor(math.log(i+1, 2))) # 지수, 밑

# i =0부터 시작돼서 i+1, 이진트리기떄문에 밑은 2

else:

row =0

if row!= last_row:

output.write('\n')

columns = 2**row

col_width = int(math.floor((total_width * 1.0) / columns ))

output.write(str(n).center(col_width, fill))

last_row = row

print(output.getvalue())

print('-'*total_width)

print()

return

"""

0

MyungHak

파이썬 2.x버젼과 3.x버젼이 차이가 있으니 주의해 주세요

그리고 이 코드는 이 전 강의에서 댓글로 소스코드를 올려주신 분 것 입니다.

"""

import math

from io import StringIO, BytesIO

3.x 는 String IO,

2.x는 BytesIO 사용바람

def show_tree(tree, total_width=36, fill= ' '):

Pretty-print a tree

#output = StringIO() # for 3.x

output = BytesIO() # for 2.x

last_row = -1

for i, n in enumerate(tree):

if i:

row = int(math.floor(math.log(i+1, 2))) # 지수, 밑

# i =0부터 시작돼서 i+1, 이진트리기떄문에 밑은 2

else:

row =0

if row!= last_row:

output.write('\n')

columns = 2**row

col_width = int(math.floor((total_width * 1.0) / columns ))

output.write(str(n).center(col_width, fill))

last_row = row

print(output.getvalue())

print('-'*total_width)

print()

return

"""

0

MyungHak

파이썬 2.x버젼과 3.x버젼이 차이가 있으니 주의해 주세요

그리고 이 코드는 이 전 강의에서 댓글로 소스코드를 올려주신 분 것 입니다.

"""

import math

from io import StringIO, BytesIO

3.x 는 String IO,

2.x는 BytesIO 사용바람

def show_tree(tree, total_width=36, fill= ' '):

Pretty-print a tree

#output = StringIO() # for 3.x

output = BytesIO() # for 2.x

last_row = -1

for i, n in enumerate(tree):

if i:

row = int(math.floor(math.log(i+1, 2))) # 지수, 밑

# i =0부터 시작돼서 i+1, 이진트리기떄문에 밑은 2

else:

row =0

if row!= last_row:

output.write('\n')

columns = 2**row

col_width = int(math.floor((total_width * 1.0) / columns ))

output.write(str(n).center(col_width, fill))

last_row = row

print(output.getvalue())

print('-'*total_width)

print()

return

"""

0

MyungHak

파이썬 2.x버젼과 3.x버젼이 차이가 있으니 주의해 주세요

그리고 이 코드는 이 전 강의에서 댓글로 소스코드를 올려주신 분 것 입니다.

"""

import math

from io import StringIO, BytesIO

3.x 는 String IO,

2.x는 BytesIO 사용바람

def show_tree(tree, total_width=36, fill= ' '):

Pretty-print a tree

#output = StringIO() # for 3.x

output = BytesIO() # for 2.x

last_row = -1

for i, n in enumerate(tree):

if i:

row = int(math.floor(math.log(i+1, 2))) # 지수, 밑

# i =0부터 시작돼서 i+1, 이진트리기떄문에 밑은 2

else:

row =0

if row!= last_row:

output.write('\n')

columns = 2**row

col_width = int(math.floor((total_width * 1.0) / columns ))

output.write(str(n).center(col_width, fill))

last_row = row

print(output.getvalue())

print('-'*total_width)

print()

return

"""

0

MyungHak

파이썬 2.x버젼과 3.x버젼이 차이가 있으니 주의해 주세요

그리고 이 코드는 이 전 강의에서 댓글로 소스코드를 올려주신 분 것 입니다.

"""

import math

from io import StringIO, BytesIO

3.x 는 String IO,

2.x는 BytesIO 사용바람

def show_tree(tree, total_width=36, fill= ' '):

Pretty-print a tree

#output = StringIO() # for 3.x

output = BytesIO() # for 2.x

last_row = -1

for i, n in enumerate(tree):

if i:

row = int(math.floor(math.log(i+1, 2))) # 지수, 밑

# i =0부터 시작돼서 i+1, 이진트리기떄문에 밑은 2

else:

row =0

if row!= last_row:

output.write('\n')

columns = 2**row

col_width = int(math.floor((total_width * 1.0) / columns ))

output.write(str(n).center(col_width, fill))

last_row = row

print(output.getvalue())

print('-'*total_width)

print()

return

"""

주피터 노트북 실행 토큰

0

1

0

코랩 백엔드

0

12

2

전체 과정에 대한 질문입니다.

1

20

1

xgboost 사용 시 오류 이유

0

21

2

강사님 강의 더 주세요

1

22

1

작업형 2 제출하는 법

0

45

2

Section 5. 문자열 슬라이싱, 파생변수, 평균값 질문 드립니다.

0

31

1

예시문제 작업형2(ver. 2025)

0

32

2

수강 연장 문의드립니다.

0

39

2

강사님 강의 잘듣고있습니다! 오류관련 질문 드립니다!

0

36

0

예시문제 작업형2(ver. 2025)

0

44

2

작업형2 모의문제 3 질문

0

49

1

오랜만에 인사드립니다 강사님

1

38

1

강의신청 후

0

47

1

안녕하세요 강사님 문의사항이 있습니다

0

41

1

수강 연장 문의

0

85

4

수강기간 연장 관련 문의

0

58

2

작업형2모의문제3_updated2026.10

0

75

2

안녕하세요. 수강연장 신청드립니다

0

52

2

코랩 링크

0

48

2

사용자설정에 claude 설정들은 어떻게 하나요??

0

65

1

윈도우 환경에서는 진행이 어렵나요?

0

72

1

bisect와 힙의 속도차이

0

389

0

감사합니다.

0

294

0