Algorithm/파이썬 μ½”λ”©ν…ŒμŠ€νŠΈ

Algorithm/파이썬 μ½”λ”©ν…ŒμŠ€νŠΈ

DFS(κΉŠμ΄μš°μ„ νƒμƒ‰)기초 - 1. μ΄μ§„νŠΈλ¦¬ 순회(κΉŠμ΄μš°μ„ νƒμƒ‰)

이진 트리(Binary Tree)λ₯Ό νƒμƒ‰ν•˜λŠ” λ°©λ²•μ—λŠ” 크게 λ‹€μŒμ˜ 4가지가 μžˆλ‹€. μ „μœ„μˆœνšŒ(Preorder Traversal) μ€‘μœ„μˆœνšŒ(Inorder Traversal) ν›„μœ„μˆœνšŒ(Postorder Traversal) 레벨순회(Levelorder Traversal) λ˜λŠ” BFS(Breadth-First Search; λ„ˆλΉ„ μš°μ„  탐색) 레벨순회(;BFS)λ₯Ό μ œμ™Έν•œ λ‚˜λ¨Έμ§€ μˆœνšŒλ°©μ‹μ€ DFS(Depth-First Search; 깊이 μš°μ„  탐색)으둜 λΆ„λ₯˜ν•  수 μžˆλ‹€. μ „μœ„μˆœνšŒ(preorder traversal) μ „μœ„μˆœνšŒλŠ” 루트 λ…Έλ“œλ₯Ό λ¨Όμ € νƒμƒ‰ν•˜κ³ , μžμ‹ λ…Έλ“œλ₯Ό 탐색 λΆ€λͺ¨-μ™Όμͺ½-였λ₯Έμͺ½ μ€‘μœ„μˆœνšŒ(inorder traversal) μ€‘μœ„μˆœνšŒλŠ” μ™Όμͺ½ μžμ‹ λ…Έλ“œλ₯Ό νƒμƒ‰ν•˜κ³  , 루트 λ…Έλ“œλ₯Ό νƒμƒ‰ν•˜κ³  , 였λ₯Έμͺ½ μžμ‹ λ…Έλ“œλ₯Ό ..

Algorithm/파이썬 μ½”λ”©ν…ŒμŠ€νŠΈ

DFS(κΉŠμ΄μš°μ„ νƒμƒ‰)기초 - 0. [μ„ μˆ˜μ§€μ‹] μž¬κ·€ν•¨μˆ˜μ™€ μŠ€νƒ

μž¬κ·€ν•¨μˆ˜ 자기 μžμ‹ μ„ ν˜ΈμΆœν•˜λŠ” ν•¨μˆ˜ μž¬κ·€ν•¨μˆ˜ μž‘λ™ν• λ•Œ μŠ€νƒ 자료ꡬ쑰λ₯Ό μ‚¬μš© 반볡문의 효과λ₯Ό λ‚Ό 수 μžˆλ‹€ (반볡문의 λŒ€μ²΄, 3쀑4쀑 forλ¬Έ ) 좜λ ₯ ν›„ μž¬κ·€ν•¨μˆ˜ 호좜 μž¬κ·€ν•¨μˆ˜ 호좜 ν›„ 좜λ ₯ 1을 λ°˜ν™˜ν•˜λ©° 이전에 return ν•˜μ˜€λ˜ 값듀을 κ³±ν•œ λ’€ λ‹€μ‹œ λ°˜ν™˜ν•΄κ°€λŠ” 과정을 κ±°μΉ©λ‹ˆλ‹€ https://m.blog.naver.com/jsky10503/221248164066 μž¬κ·€(Recursion)호좜둜 μ•Œμ•„λ³΄λŠ” μ•Œκ³ λ¦¬μ¦˜κΈ°μ΄ˆ ν•¨μˆ˜ λ‚΄μ—μ„œ μžκΈ°μžμ‹ μ˜ ν•¨μˆ˜λ₯Ό λ‹€μ‹œ ν˜ΈμΆœν•˜λŠ” 방법을 μž¬κ·€ν˜ΈμΆœμ΄λΌκ³  ν•©λ‹ˆλ‹€. Recursion이라고도 많이 μ•Œ... blog.naver.com

Algorithm/파이썬 μ½”λ”©ν…ŒμŠ€νŠΈ

자료ꡬ쑰 ν™œμš© (νž™) - 11. μ΅œλŒ€νž™

λ‚˜μ˜ 풀이 μ΅œλŒ€νž™ heapqμ—μ„œλŠ” μ΅œλŒ€ νž™μ„ μ œκ³΅ν•˜μ§€ μ•ŠλŠ”λ‹€. λ”°λΌμ„œ λ‹€μŒκ³Ό 같이 λΆ€ν˜Έλ₯Ό λ³€κ²½ν•˜λŠ” 방법을 μ‚¬μš©ν•΄μ„œ μ΅œλŒ€ νž™μ„ κ΅¬ν˜„ν•œλ‹€. λΆ€ν˜Έλ₯Ό λ°”κΏ”μ„œ μ΅œμ†Œ νž™μ— λ„£μ–΄μ€€ 뒀에 μ΅œμ†Ÿκ°’λΆ€ν„° pop을 해쀄 λ•Œ λ‹€μ‹œ λΆ€ν˜Έλ₯Ό λ°”κΏ”μ£Όλ©΄ μ΅œλŒ€ νž™κ³Ό λ™μΌν•˜λ‹€. import heapq heap = [] values = [1,5,3,2,4] # μ•„λž˜ for문을 μ‹€ν–‰μ‹œν‚€κ³  λ‚˜λ©΄ heap은 [-5,-4,-3,-1,-2]κ°€ λœλ‹€. for value in values: heapq.heappush(heap, -value) # μ•„λž˜ for문을 μ‹€ν–‰μ‹œν‚€λ©΄ 5,4,3,2,1이 좜λ ₯λœλ‹€. 즉, 큰 μˆ«μžλΆ€ν„° 좜λ ₯이 λœλ‹€. for i in range(5): print(-heapq.heappop(heap))

Algorithm/파이썬 μ½”λ”©ν…ŒμŠ€νŠΈ

자료ꡬ쑰 ν™œμš© (νž™) - 10. μ΅œμ†Œνž™

λ‚˜μ˜ 풀이 μ΅œμ†Œ νž™: λΆ€λͺ¨ λ…Έλ“œμ˜ 킀값이 μžμ‹ λ…Έλ“œμ˜ 킀값보닀 항상 μž‘μ€ νž™ μ΅œλŒ€ νž™: λΆ€λͺ¨ λ…Έλ“œμ˜ 킀값이 μžμ‹ λ…Έλ“œμ˜ 킀값보닀 항상 큰 νž™ νž™ 생성 & μ›μ†Œ μΆ”κ°€ import heapq heap = [] heapq.heappush(heap, 50) 이미 생성해둔 λ¦¬μŠ€νŠΈκ°€ μžˆλ‹€λ©΄ heapify ν•¨μˆ˜λ₯Ό 톡해 μ¦‰κ°μ μœΌλ‘œ νž™ μžλ£Œν˜•μœΌλ‘œ λ³€ν™˜ν•  수 μžˆλ‹€. heap2 = [50 ,10, 20] heapq.heapify(heap2) νž™μ—μ„œ μ›μ†Œ μ‚­μ œ heappop ν•¨μˆ˜λŠ” κ°€μž₯ μž‘μ€ μ›μ†Œλ₯Ό νž™μ—μ„œ μ œκ±°ν•¨κ³Ό λ™μ‹œμ— κ·Έλ₯Ό κ²°κ΄κ°’μœΌλ‘œ λ¦¬ν„΄ν•œλ‹€. result = heapq.heappop(heap) print(result) https://littlefoxdiary.tistory.com/m/3 [Python] νž™ 자료ꡬ쑰 / ..

hello_u
'Algorithm/파이썬 μ½”λ”©ν…ŒμŠ€νŠΈ' μΉ΄ν…Œκ³ λ¦¬μ˜ κΈ€ λͺ©λ‘ (3 Page)