λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
728x90
λ°˜μ‘ν˜•

πŸ–₯ Computer Science61

[Algorithm] μ†Œμˆ˜μ™€ κ΄€λ ¨λœ μ•Œκ³ λ¦¬μ¦˜(feat. μ—λΌν† μŠ€ ν…Œλ„€μŠ€μ˜ 체) μ•ˆλ…•ν•˜μ„Έμš” Foma πŸ’» μž…λ‹ˆλ‹€! μ•Œκ³ λ¦¬μ¦˜ 문제λ₯Ό ν’€λ‹€ 보면 μ†Œμˆ˜λ₯Ό 찾아햐 ν•˜λŠ” μœ ν˜•μ΄ λ§Žμ€λ°μš”. μ†Œμˆ˜μ˜ 갯수λ₯Ό μ°Ύμ•„μ•Ό ν•  λ•Œ, μ†Œμˆ˜μΈμ§€ μ•„λ‹Œμ§€ 뢄별해야 ν•  λ•Œ λ“± 효율적인 μ•Œκ³ λ¦¬μ¦˜μ΄ ν•„μš”ν•©λ‹ˆλ‹€. μ˜€λŠ˜μ€ μ •ν™•νžˆ μ•Œκ³  λΉ λ₯΄κ²Œ μ°ΎκΈ° μœ„ν•΄μ„œ 글을 정리해보렀고 ν•©λ‹ˆλ‹€. λ°”λ‘œ μ‹œμž‘ν• κ²Œμš”~! 기쑴의 μ†Œμˆ˜λ₯Ό μ°ΎλŠ” 방법 기쑴의 μ†Œμˆ˜λ₯Ό μ°ΎλŠ” 방법은 kλΌλŠ” μˆ˜κ°€ μžˆλ‹€λ©΄ λ‹¨μˆœν•˜κ²Œ 2λΆ€ν„° nκΉŒμ§€ k둜 λ‚˜λˆ μ„œ λ‚˜λˆ„μ–΄ λ–¨μ–΄μ§€λŠ” 숫자의 갯수λ₯Ό νŒλ³„ν•˜λ©΄ 되겠죠? ν•˜μ§€λ§Œ 이런 방법은 μˆ«μžκ°€ 컀지면 컀질수둝 λΉ„νš¨μœ¨μ μ΄κΈ° λ•Œλ¬Έμ— μ‹œκ°„μ΄ 였래 걸리게 λ©λ‹ˆλ‹€. κ·ΈλŸ¬λ―€λ‘œ 효율적인 방법을 μ‚¬μš©ν•΄μ•Ό ν•˜λŠ”λ°μš”. μ—λΌν† μŠ€ ν…Œλ„€μŠ€μ˜ 체 λ¨Όμ € 2λΆ€ν„° nκΉŒμ§€μ˜ κ΅¬κ°„μ—μ„œ μ†Œμˆ˜μ˜ κ°―μˆ˜λ‚˜, μ–΄λ–€ μ†Œμˆ˜κ°€ μžˆλŠ”μ§€ ν™•μΈν•˜κΈ° μœ„ν•΄μ„  "μ—λΌν† μŠ€ ν…Œλ„€μŠ€μ˜ 체"λ₯Ό μ•Œκ³ λ¦¬μ¦˜μ„.. 2022. 1. 19.
[Algorithm] 동적 κ³„νšλ²•(Dynamic Programming)μ΄λž€? μ•ˆλ…•ν•˜μ„Έμš” Foma πŸ’» μž…λ‹ˆλ‹€! κ·Έ λ™μ•ˆ μ•Œκ³ λ¦¬μ¦˜ 문제λ₯Ό ν’€λ©΄μ„œ 동적 κ³„νšλ²• κ΄€λ ¨λœ λ¬Έμ œκ°€ λ‚˜μ˜€λ©΄ 어렀움을 κ²ͺκ³€ ν–ˆλŠ”λ°μš”.. μ˜€λŠ˜μ€ 동적 κ³„νšλ²•μ— λŒ€ν•΄μ„œ μ œλŒ€λ‘œ 정리λ₯Ό 해보렀고 ν•©λ‹ˆλ‹€. λ°”λ‘œ μ‹œμž‘ν• κ²Œμš”! 동적 κ³„νšλ²•(Dynamic Programming)μ΄λž€? λ‹€μ΄λ‚˜λ―Ή ν”„λ‘œκ·Έλž˜λ°μ€ 1950λ…„λŒ€ 미ꡭ의 μˆ˜ν•™μžμΈ λ¦¬μ²˜λ“œ 벨맨이 μ΅œμ ν™” 문제(Optimization Problem)λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄μ„œ κ³ μ•ˆλ˜μ—ˆλ‹€. λ³΅μž‘ν•œ 문제λ₯Ό κ°„λ‹¨ν•œ μ—¬λŸ¬ 개의 문제둜 λ‚˜λˆ„μ–΄ ν‘ΈλŠ” 방법을 λ§ν•˜λ©° 이것은 λΆ€λΆ„ 문제 반볡과 졜적 λΆ€λΆ„ ꡬ쑰λ₯Ό 가지고 μžˆλŠ” μ•Œκ³ λ¦¬μ¦˜μ„ 일반적인 방법에 λΉ„ν•΄ λ”μš± 적은 μ‹œκ°„ 내에 ν’€ λ•Œ μ‚¬μš©ν•œλ‹€. - μœ„ν‚€ λ°±κ³Ό - 즉, λΆ„ν•  정볡 μ•Œκ³ λ¦¬μ¦˜κ³Ό 같이 큰 문제λ₯Ό μž‘κ²Œ μͺΌκ°œμ„œ 문제λ₯Ό ν•΄κ²°ν•΄ λ‚˜κ°€λŠ” μ•Œκ³ λ¦¬μ¦˜μž…λ‹ˆλ‹€. λ‹€.. 2021. 12. 9.
[Data Structure] B-Treeλž€? μ•ˆλ…•ν•˜μ„Έμš” Foma πŸ’» μž…λ‹ˆλ‹€! μ˜€λŠ˜μ€ 트리 자료ꡬ쑰 쀑 κ· ν˜• λνŒμ™• (이름 μžμ²΄κ°€ Balanced - Tree)인 B-Tree에 λŒ€ν•΄ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€. λ°”λ‘œ μ‹œμž‘ν• κ²Œμš”~ B-Tree의 λ°°κ²½ B-트리(B-tree)λŠ” λ°μ΄ν„°λ² μ΄μŠ€μ™€ 파일 μ‹œμŠ€ν…œμ—μ„œ 널리 μ‚¬μš©λ˜λŠ” 트리 자료ꡬ쑰의 μΌμ’…μœΌλ‘œ, 이진 트리λ₯Ό ν™•μž₯ν•΄ ν•˜λ‚˜μ˜ λ…Έλ“œκ°€ κ°€μ§ˆ 수 μžˆλŠ” μžμ‹ λ…Έλ“œμ˜ μ΅œλŒ€ μˆ«μžκ°€ 2보닀 큰 트리 ꡬ쑰이닀. - μœ„ν‚€ λ°±κ³Ό - 즉, 이진 트리λ₯Ό 쑰금 더 효율적으둜 ν™•μž₯ν•œ μžλ£Œκ΅¬μ‘°μ—μš”! 이진 탐색 νŠΈλ¦¬λŠ” μ΅œμ•…μ˜ 경우 O(n)의 μ‹œκ°„ λ³΅μž‘λ„λ₯Ό κ°–κΈ° λ•Œλ¬Έμ— 그것을 쑰금 더 효율적으둜 λ§Œλ“  것이 O(logn)의 μ‹œκ°„ λ³΅μž‘λ„λ₯Ό κ°–λŠ” AVL νŠΈλ¦¬μ˜€μŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ λ§Œμ•½ 2천만개의 데이터가 μžˆλ‹€λ©΄ log20,000,000 = 24 즉, μ΅œλŒ€ 2.. 2021. 12. 6.
[Data Structure] AVL 트리 κ΅¬ν˜„ν•΄λ³΄κΈ° (feat. Swift) μ•ˆλ…•ν•˜μ„Έμš” Foma πŸ’» μž…λ‹ˆλ‹€! μ €λ²ˆ μ‹œκ°„μ— AVL νŠΈλ¦¬κ°€ 뭔지 이둠에 λŒ€ν•΄ μ•Œμ•„λ³΄μ•˜λŠ”λ°μš”. (ν˜Ήμ‹œ μ•ˆλ³΄μ‹  뢄듀은 μ—¬κΈ° μ—μ„œ ν™•μΈν•΄μ£Όμ„Έμš”!) μ˜€λŠ˜μ€ AVL 트리λ₯Ό 직접 κ΅¬ν˜„ν•΄λ³΄λ €κ³  ν•©λ‹ˆλ‹€. λ°”λ‘œ μ‹œμž‘ν• κ²Œμš”~ AVLNode 기본적으둜 μ΄μ§„νƒμƒ‰νŠΈλ¦¬μ˜ λ…Έλ“œμ™€ λ˜‘κ°™μ§€λ§Œ μ™Όμͺ½κ³Ό,였λ₯Έμͺ½ μžμ‹μ˜ 높이와 밸런슀 νŒ©ν„°λ₯Ό μΈ‘μ •ν•  λ³€μˆ˜λ₯Ό λ”°λ‘œ λ§Œλ“€μ–΄μ—ˆμŠ΅λ‹ˆλ‹€. class AVLNode { var value:T var leftChild:AVLNode? var rightChild:AVLNode? var height:Int = 0 var leftHeight:Int { return leftChild?.height ?? -1 } var rightHeight:Int { return rightChild?.height ?? -1 } var.. 2021. 12. 6.
[Data Structure] AVL(Adelson-Velsky and Landis) νŠΈλ¦¬λž€? μ•ˆλ…•ν•˜μ„Έμš” Foma πŸ’» μž…λ‹ˆλ‹€! μ˜€λŠ˜μ€ μ €λ²ˆμ— μ •λ¦¬ν–ˆλ˜ 이진 탐색 트리λ₯Ό 더 μ—…κ·Έλ ˆμ΄λ“œ(?)ν•œ 자료ꡬ쑰인 AVL νŠΈλ¦¬μ— λŒ€ν•΄μ„œ μ•Œμ•„λ³΄λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€. (ν˜Ήμ‹œ 이진 탐색 νŠΈλ¦¬μ— λŒ€ν•΄ λͺ¨λ₯΄μ‹œλŠ” 뢄듀은 μ—¬κΈ° μ—μ„œ 보고 μ™€μ£Όμ„Έμš”!) λ°”λ‘œ μ‹œμž‘ν• κ²Œμš”~ AVL(Adelson-Velsky and Landis) νŠΈλ¦¬λž€? πŸ€” 컴퓨터 κ³Όν•™μ—μ„œ AVL 트리(발λͺ…μžμ˜ 이름인 Adelson-Velsky and Landisμ—μ„œ λ”°μ˜¨ 이름)λŠ” 슀슀둜 κ· ν˜•μ„ μž‘λŠ” 이진 탐색 νŠΈλ¦¬μ΄λ‹€. 슀슀둜 κ· ν˜•μ„ μž‘λŠ” 데이터 ꡬ쑰 쀑 처음으둜 발λͺ…λ˜μ—ˆλ‹€. AVL νŠΈλ¦¬μ—μ„œ, 두 μžμ‹ μ„œλΈŒνŠΈλ¦¬μ˜ λ†’μ΄λŠ” 항상 μ΅œλŒ€ 1만큼 μ°¨μ΄λ‚œλ‹€. λ§Œμ•½ μ–΄λ–€ μ‹œμ μ—μ„œ 높이 차이가 1보닀 컀지면 이 속성을 μœ μ§€ν•˜κΈ° μœ„ν•΄μ„œ 슀슀둜 κ· ν˜•μ„ μž‘λŠ”λ‹€. - μœ„ν‚€ λ°±κ³Ό - 즉, .. 2021. 12. 1.
[Data Structure] 이진 탐색 트리(Binary Search Tree) κ΅¬ν˜„ν•΄λ³΄κΈ° (feat.Swift) μ•ˆλ…•ν•˜μ„Έμš” Foma πŸ’» μž…λ‹ˆλ‹€! μ €λ²ˆ μ‹œκ°„μ— 이진 탐색 νŠΈλ¦¬κ°€ 뭔지 이둠에 λŒ€ν•΄ μ•Œμ•„λ³΄μ•˜λŠ”λ°μš”. μ˜€λŠ˜μ€ 이진 탐색 트리λ₯Ό 직접 κ΅¬ν˜„ν•΄λ³΄λ €κ³  ν•©λ‹ˆλ‹€. λ°”λ‘œ μ‹œμž‘ν• κ²Œμš”~ BSTNode 이진 탐색 트리의 λ…Έλ“œλ₯Ό λ§Œλ“€μ–΄ μ£Όκ² μŠ΅λ‹ˆλ‹€. λ…Έλ“œλŠ” κ°’,μ™Όμͺ½,였λ₯Έμͺ½ μžμ‹μ˜ λ…Έλ“œ 정보λ₯Ό 가지고 μžˆμŠ΅λ‹ˆλ‹€. class BSTNode { var value:T var leftChild:BSTNode? var rightChild:BSTNode? init(value:T) { self.value = value } } Binary Search Tree 이진 탐색 트리의 μ΅œμƒλ‹¨ 값을 κ°€μ§ˆ rootλ₯Ό ν”„λ‘œνΌν‹°λ‘œ μ •μ˜ν–ˆμŠ΅λ‹ˆλ‹€. struct BinarySearchTree { var root:BSTNode? Insert public mutatin.. 2021. 11. 18.
[Data Structure] 이진 탐색 트리(Binary Search Tree)λž€? μ•ˆλ…•ν•˜μ„Έμš” Foma πŸ’» μž…λ‹ˆλ‹€! μ˜€λŠ˜μ€ 트리 자료ꡬ쑰 쀑 효율적인 검색,μ‚½μž…,μ‚­μ œλ₯Ό ν•  수 μžˆλŠ” 이진 탐색 νŠΈλ¦¬μ— λŒ€ν•΄μ„œ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€. λ°”λ‘œ μ‹œμž‘ν• κ²Œμš”~ 이진 트리(Binary Tree)λž€? πŸ€” 이진 탐색 νŠΈλ¦¬λŠ” 이진 트리 자료ꡬ쑰둜 λ˜μ–΄μžˆκΈ° λ•Œλ¬Έμ— λ¨Όμ € 이진 νŠΈλ¦¬κ°€ 뭔지에 λŒ€ν•΄ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€. 이진 νŠΈλ¦¬λŠ” 각각의 λ…Έλ“œκ°€ μ΅œλŒ€ 두 개의 μžμ‹ λ…Έλ“œλ₯Ό κ°€μ§€λŠ” 트리 자료 ꡬ쑰둜, μžμ‹ λ…Έλ“œλ₯Ό 각각 μ™Όμͺ½ μžμ‹ λ…Έλ“œμ™€ 였λ₯Έμͺ½ μžμ‹ λ…Έλ“œλΌκ³  ν•œλ‹€.... - μœ„ν‚€ λ°±κ³Ό - 즉, λ…Έλ“œλ§ˆλ‹€ μžμ‹μ΄ 2개 μ΄ν•˜μΈ 트리λ₯Ό λ§ν•©λ‹ˆλ‹€. μ•„λž˜ 그림처럼 이루어진 트리λ₯Ό λ§ν•©λ‹ˆλ‹€. (μžμ‹μ΄ 없어도 되고, ν•˜λ‚˜μ—¬λ„ 되고, 두 κ°œμ—¬λ„ λ©λ‹ˆλ‹€.) 이진 탐색 트리(Binary Search Tree)λž€? 🧐 이진 탐색 νŠΈλ¦¬λŠ” λ‹€μŒκ³Ό 같은 속.. 2021. 11. 17.
[Data Structure] 해쉬 ν…Œμ΄λΈ”(Hash Table) κ΅¬ν˜„ν•΄λ³΄κΈ°(feat. Swift) μ•ˆλ…•ν•˜μ„Έμš” Foma πŸ’» μž…λ‹ˆλ‹€! μ˜€λŠ˜μ€ μ €λ²ˆ κΈ€μ—μ„œ 해쉬 ν…Œμ΄λΈ”μ˜ 이둠에 μ΄μ–΄μ„œ 직접 κ΅¬ν˜„ν•΄ 보렀고 ν•©λ‹ˆλ‹€! (ν˜Ήμ‹œ μ €λ²ˆ 글을 μ•ˆλ³΄μ…¨λ‹€λ©΄ μ—¬κΈ° λ₯Ό ν†΅ν•΄μ„œ 보고 μ™€μ£Όμ„Έμš”~) λ°”λ‘œ μ‹œμž‘ν• κ²Œμš”~ HashTable λ¨Όμ € μ €λŠ” 해쉬 ν•¨μˆ˜λ₯Ό Digit Folding μ•Œκ³ λ¦¬μ¦˜μ„ μ΄μš©ν•΄μ„œ λ§Œλ“€ 것이기 λ•Œλ¬Έμ— key값을 String으둜 μ„€μ •ν–ˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ 좩돌이 났을 λ•Œ ν•΄κ²° λ°©λ²•μœΌλ‘œ Chaining 기법을 μ‚¬μš©ν•˜μ˜€μ§€λ§Œ μ—°κ²° 리슀트 λŒ€μ‹  배열을 μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€. μ•„λž˜μ™€ 같이 typealias둜 별칭을 μ„€μ •ν•΄μ£Όκ³  버킷을 μ΄μ€‘λ°°μ—΄λ‘œ μ„ μ–Έν–ˆμŠ΅λ‹ˆλ‹€. public struct HashTable { public typealias Key = String private typealias Element = (key:Key,value:Val.. 2021. 11. 16.
[Data Structure] 해쉬 ν…Œμ΄λΈ”(Hash Table)μ΄λž€? (feat. 이둠) μ•ˆλ…•ν•˜μ„Έμš” Foma πŸ’» μž…λ‹ˆλ‹€! μ˜€λŠ˜μ€ μš°λ¦¬κ°€ μ•„μ£Ό ν”ν•˜κ²Œ μ‚¬μš©ν•˜κ³  μžˆλŠ” 해쉬 ν…Œμ΄λΈ”, Swift둜 λ§ν•˜λ©΄ λ”•μ…”λ„ˆλ¦¬μ— λŒ€ν•΄μ„œ μ•Œμ•„λ³Ό κ±°μ—μš”! 이미 κ΅¬ν˜„λ˜μ–΄ μžˆλŠ” μ½”λ“œλ‘œ μ‰½κ²Œ μ‚¬μš©ν–ˆλŠ”λ° 직접 κ΅¬ν˜„ν•˜λ €κ³  ν•˜λ‹ˆ μ§„μ§œ λ³΅μž‘ν•˜λ”λΌκ΅¬μš”. κ·Έλž˜μ„œ μ˜€λŠ˜μ€ 해쉬 ν…Œμ΄λΈ”μ— λŒ€ν•΄μ„œ 정리해보렀고 ν•©λ‹ˆλ‹€! λ°”λ‘œ μ‹œμž‘ν• κ²Œμš”~ 해쉬 ν…Œμ΄λΈ”(Hash Table)μ΄λž€? μ •μ˜λŠ” μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€. ν•΄μ‹œ ν…Œμ΄λΈ”μ€ μ»΄ν“¨νŒ…μ—μ„œ ν‚€λ₯Ό 값에 맀핑할 수 μžˆλŠ” ꡬ쑰인, μ—°κ΄€ λ°°μ—΄ 좔가에 μ‚¬μš©λ˜λŠ” 자료 ꡬ쑰이닀. ν•΄μ‹œ ν…Œμ΄λΈ”μ€ ν•΄μ‹œ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ 색인(index)을 버킷(bucket)μ΄λ‚˜ 슬둯(slot)의 λ°°μ—΄λ‘œ κ³„μ‚°ν•œλ‹€. - μœ„ν‚€ λ°±κ³Ό - 즉, key와 valueλ₯Ό μ‚¬μš©ν•΄μ„œ 데이터λ₯Ό μ €μž₯ν•˜λŠ” μžλ£Œκ΅¬μ‘°μž…λ‹ˆλ‹€. keyκ°’μœΌλ‘œ valueλ₯Ό ν•œ λ²ˆμ— 찾을 .. 2021. 11. 15.
[Algorithm] 퀡 μ •λ ¬(Quick Sort)λž€? (feat. Swift) μ•ˆλ…•ν•˜μ„Έμš” Foma πŸ’» μž…λ‹ˆλ‹€! μ˜€λŠ˜μ€ λ“œλ””μ–΄ μ •λ ¬ μ•Œκ³ λ¦¬μ¦˜μ—μ„œ 말 κ·ΈλŒ€λ‘œ 맀우 λΉ λ₯Έ μˆ˜ν–‰μ‹œκ°„μ„ 가진 퀡 정렬에 λŒ€ν•΄μ„œ μ•Œμ•„λ³΄λ €κ³  ν•©λ‹ˆλ‹€! λ°”λ‘œ μ‹œμž‘ν• κ²Œμš”~ 퀡 μ •λ ¬(Quick Sort)μ΄λž€? 🧐 퀡 μ •λ ¬(Quicksort)은 찰슀 μ•€ν„°λ‹ˆ λ¦¬μ²˜λ“œ ν˜Έμ–΄κ°€ κ°œλ°œν•œ μ •λ ¬ μ•Œκ³ λ¦¬μ¦˜μ΄λ‹€. λ‹€λ₯Έ μ›μ†Œμ™€μ˜ λΉ„κ΅λ§ŒμœΌλ‘œ 정렬을 μˆ˜ν–‰ν•˜λŠ” 비ꡐ 정렬에 μ†ν•œλ‹€. - μœ„ν‚€ λ°±κ³Ό - (참고둜 λ¦¬μ²˜λ“œ ν˜Έμ–΄κ°€ 퀡 정렬을 κ°œλ°œν–ˆμ„ λ‹Ήμ‹œ λ‚˜μ΄λŠ” 26살이라고 ν•˜λ„€μš”...) 합병 μ •λ ¬κ³Ό 같이 λΆ„ν•  정볡 μ•Œκ³ λ¦¬μ¦˜μ— μ†ν•˜κ³  ν‰κ· μ μœΌλ‘œ 맀우 λΉ λ₯Έ μˆ˜ν–‰μ†λ„λ₯Ό μžλž‘ν•©λ‹ˆλ‹€. 퀡 μ •λ ¬ κ³Όμ • πŸ”¨ 퀡 정렬을 ν•˜κΈ° μœ„ν•΄μ„  피봇(Pivot)이 핡심이 λ˜λŠ”λ°μš”. μ—¬κΈ°μ„œ 피봇은 μ–΄λ–€ κ²ƒμΌκΉŒμš”? 피봇은 λ°”λ‘œ κΈ°μ€€μž…λ‹ˆλ‹€. 피봇을 κ°€μž₯ 첫 번째 인덱슀λ₯Ό 선택할 μˆ˜λ„ .. 2021. 10. 25.
[Algorithm] νž™ μ •λ ¬(HeapSort)μ΄λž€? (feat.Swift) μ•ˆλ…•ν•˜μ„Έμš” Foma πŸ’» μž…λ‹ˆλ‹€! μ €λ²ˆ μ‹œκ°„μ— νž™μ΄λž€ μžλ£Œκ΅¬μ‘°μ— λŒ€ν•΄μ„œ μ•Œμ•„λ³΄μ•˜λŠ”λ°μš”. (ν˜Ήμ‹œλΌλ„ μ•ˆλ³΄μ‹  뢄은 μ—¬κΈ° μ—μ„œ 보고 μ™€μ£Όμ„Έμš”!) μ˜€λŠ˜μ€ νž™μ„ μ΄μš©ν•΄μ„œ 정렬을 ν•˜λŠ” νž™μ†ŒνŠΈμ— λŒ€ν•΄μ„œ μ•Œμ•„λ³΄λ €κ³  ν•©λ‹ˆλ‹€! λ°”λ‘œ μ‹œμž‘ν• κ²Œμš”~ νž™ μ •λ ¬((HeapSort)μ΄λž€? 🧐 νž™ μ •λ ¬(Heap sort)μ΄λž€ μ΅œλŒ€ νž™ νŠΈλ¦¬λ‚˜ μ΅œμ†Œ νž™ 트리λ₯Ό ꡬ성해 정렬을 ν•˜λŠ” λ°©λ²•μœΌλ‘œμ„œ, λ‚΄λ¦Όμ°¨μˆœ 정렬을 μœ„ν•΄μ„œλŠ” μ΅œλŒ€ νž™μ„ κ΅¬μ„±ν•˜κ³  μ˜€λ¦„μ°¨μˆœ 정렬을 μœ„ν•΄μ„œλŠ” μ΅œμ†Œ νž™μ„ κ΅¬μ„±ν•˜λ©΄ λœλ‹€. - μœ„ν‚€ λ°±κ³Ό - 즉, νž™μ„ μ΄μš©ν•΄μ„œ 정렬을 ν•˜λŠ” λ°©μ‹μ΄μ—μš”. νž™ μ •λ ¬ κ³Όμ • πŸ”¨ νž™ μ •λ ¬ 과정은 νž™μ—μ„œ μ‚­μ œλ₯Ό κ΅¬ν˜„ν•  λ•Œμ™€ λ˜‘κ°™μ•„μš”. μ‚­μ œκ³Όμ •μ΄ μ•„λž˜μ™€ κ°™μ€λ°μš”. λͺ¨λ“  λ…Έλ“œλ₯Ό μ‚­μ œν•˜κ³  배열에 μ°¨λ‘€λ‘œ μŒ“κ²Œλ˜λ©΄ μ–΄λ–»κ²Œ λ κΉŒμš”? μ΅œλŒ€νž™μ΄λΌλ©΄ κ°€μž₯ 큰 μˆ«μžκ°€ μ°¨λ‘€.. 2021. 10. 19.
[Data Structure] νž™(Heap)μ΄λž€? (feat. Swift) μ•ˆλ…•ν•˜μ„Έμš” Foma πŸ’» μž…λ‹ˆλ‹€! μš”μ¦˜ μ•Œκ³ λ¦¬μ¦˜μ„ κ³΅λΆ€ν•˜κ³  μžˆλŠ”λ° κ·Έ 쀑 νž™μ†ŒνŠΈμ— λŒ€ν•΄ μ•Œκ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€. νž™μ†ŒνŠΈλ₯Ό ν•˜λ €λ©΄ νž™μ΄λΌλŠ” μžλ£Œκ΅¬μ‘°κ°€ ν•„μš”ν•˜λ”λΌκ΅¬μš”. κ·Έλž˜μ„œ νž™μ΄ 무엇이고 μ–΄λ–»κ²Œ κ΅¬ν˜„ν•˜λŠ”μ§€μ— λŒ€ν•΄ μ •λ¦¬ν•˜λ €κ³  ν•©λ‹ˆλ‹€! λ°”λ‘œ μ‹œμž‘ν• κ²Œμš”~ μ™„μ „ μ΄μ§„νŠΈλ¦¬(Complete Binary Tree)λž€? β›“ λ¨Όμ € νž™μ— λŒ€ν•΄ μ•Œμ•„λ³΄κΈ° 전에 μ™„μ „μ΄μ§„νŠΈλ¦¬μ— λŒ€ν•΄μ„œ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€. μ΄μœ λŠ” νž™μ΄ μ™„μ „μ΄μ§„νŠΈλ¦¬λ‘œ λ˜μ–΄μžˆκΈ° λ–„λ¬Έμž…λ‹ˆλ‹€. μ™„μ „ 이진 νŠΈλ¦¬μ—μ„œ, λ§ˆμ§€λ§‰ λ ˆλ²¨μ„ μ œμ™Έν•˜κ³  λͺ¨λ“  레벨이 μ™„μ „νžˆ μ±„μ›Œμ Έ 있으며, λ§ˆμ§€λ§‰ 레벨의 λͺ¨λ“  λ…Έλ“œλŠ” κ°€λŠ₯ν•œ ν•œ κ°€μž₯ μ™Όμͺ½μ— μžˆλ‹€. λ§ˆμ§€λ§‰ 레벨 h μ—μ„œ 1λΆ€ν„° 2h-1 개의 λ…Έλ“œλ₯Ό κ°€μ§ˆ 수 μžˆλ‹€. μ™„μ „ 이진 νŠΈλ¦¬λŠ” 배열을 μ‚¬μš©ν•΄ 효율적으둜 ν‘œν˜„ κ°€λŠ₯ν•˜λ‹€. - μœ„ν‚€ λ°±κ³Ό - 즉, 맨 λ§ˆμ§€λ§‰.. 2021. 10. 15.
728x90
λ°˜μ‘ν˜•