๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ381

[์ž๋ฃŒ๊ตฌ์กฐ] ํ•ด์‹œ ํ…Œ์ด๋ธ”(Hash Table) ํ•ด์‹œ ํ…Œ์ด๋ธ”(Hash Table) ํ•ด์‹œ ํ…Œ์ด๋ธ”์€ (Key, Value)์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ ํ•ด์‹œํ•จ์ˆ˜(Hash Function)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ€ํ™˜ํ•œ ๊ฐ’์„ index๋กœ ์‚ผ์Œ ํ•ด์‹œ ํ•จ์ˆ˜(Hash Function)๋ฅผ ์‚ฌ์šฉํ•ด Key ๊ฐ’์„ ์ƒ‰์ธ(index)์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์„ ํ•ด์‹ฑ(Hashing)์ด๋ผ๊ณ  ํ•จ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋กœ ํŒŒ์ด์ฌ์˜ dictionary, ๋ฃจ๋น„์˜ Hash, ์ž๋ฐ”์˜ Map ๋“ฑ์ด ์žˆ์Œ ํ•ด์‹œ ํ…Œ์ด๋ธ”์˜ ํŠน์ง• ๊ธฐ๋ณธ ์—ฐ์‚ฐ์œผ๋กœ๋Š” search, insert, delete๊ฐ€ ์žˆ์Œ ์ˆœ์ฐจ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š์Œ key๋ฅผ ํ†ตํ•ด์„œ value๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Œ => ์ด์ง„ํƒ์ƒ‰ํŠธ๋ฆฌ๋‚˜ ๋ฐฐ์—ด์— ๋น„ํ•ด ์†๋„๊ฐ€ ๋น ๋ฆ„ ์ปค๋‹ค๋ž€ ๋ฐ์ดํ„ฐ๋ฅผ ํ•ด์‹œํ•ด์„œ ์งง์€ ๊ธธ์ด๋กœ ์ถ•์•ฝํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋น„๊ตํ•  ๋•Œ ํšจ์œจ์  value๋Š” ์ค‘๋ณต ๊ฐ€๋Šฅํ•˜.. 2023. 3. 15.
[Swift] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค LV.1 ๋ช…์˜ˆ์˜ ์ „๋‹น (1) ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค LV.1 ๋ชจ์Œ ๋ช…์˜ˆ์˜ ์ „๋‹น (1) ๋ฌธ์ œ ์„ค๋ช… "๋ช…์˜ˆ์˜ ์ „๋‹น"์ด๋ผ๋Š” TV ํ”„๋กœ๊ทธ๋žจ์—์„œ๋Š” ๋งค์ผ 1๋ช…์˜ ๊ฐ€์ˆ˜๊ฐ€ ๋…ธ๋ž˜๋ฅผ ๋ถ€๋ฅด๊ณ , ์‹œ์ฒญ์ž๋“ค์˜ ๋ฌธ์ž ํˆฌํ‘œ์ˆ˜๋กœ ๊ฐ€์ˆ˜์—๊ฒŒ ์ ์ˆ˜๋ฅผ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. ๋งค์ผ ์ถœ์—ฐํ•œ ๊ฐ€์ˆ˜์˜ ์ ์ˆ˜๊ฐ€ ์ง€๊ธˆ๊นŒ์ง€ ์ถœ์—ฐ ๊ฐ€์ˆ˜๋“ค์˜ ์ ์ˆ˜ ์ค‘ ์ƒ์œ„ k๋ฒˆ์งธ ์ด๋‚ด์ด๋ฉด ํ•ด๋‹น ๊ฐ€์ˆ˜์˜ ์ ์ˆ˜๋ฅผ ๋ช…์˜ˆ์˜ ์ „๋‹น์ด๋ผ๋Š” ๋ชฉ๋ก์— ์˜ฌ๋ ค ๊ธฐ๋…ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰ ํ”„๋กœ๊ทธ๋žจ ์‹œ์ž‘ ์ดํ›„ ์ดˆ๊ธฐ์— k์ผ๊นŒ์ง€๋Š” ๋ชจ๋“  ์ถœ์—ฐ ๊ฐ€์ˆ˜์˜ ์ ์ˆ˜๊ฐ€ ๋ช…์˜ˆ์˜ ์ „๋‹น์— ์˜ค๋ฅด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. k์ผ ๋‹ค์Œ๋ถ€ํ„ฐ๋Š” ์ถœ์—ฐ ๊ฐ€์ˆ˜์˜ ์ ์ˆ˜๊ฐ€ ๊ธฐ์กด์˜ ๋ช…์˜ˆ์˜ ์ „๋‹น ๋ชฉ๋ก์˜ k๋ฒˆ์งธ ์ˆœ์œ„์˜ ๊ฐ€์ˆ˜ ์ ์ˆ˜๋ณด๋‹ค ๋” ๋†’์œผ๋ฉด, ์ถœ์—ฐ ๊ฐ€์ˆ˜์˜ ์ ์ˆ˜๊ฐ€ ๋ช…์˜ˆ์˜ ์ „๋‹น์— ์˜ค๋ฅด๊ฒŒ ๋˜๊ณ  ๊ธฐ์กด์˜ k๋ฒˆ์งธ ์ˆœ์œ„์˜ ์ ์ˆ˜๋Š” ๋ช…์˜ˆ์˜ ์ „๋‹น์—์„œ ๋‚ด๋ ค์˜ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด ํ”„๋กœ๊ทธ๋žจ์—์„œ๋Š” ๋งค์ผ "๋ช…์˜ˆ์˜ ์ „๋‹น"์˜ ์ตœํ•˜์œ„ ์ ์ˆ˜๋ฅผ ๋ฐœํ‘œํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ.. 2023. 3. 15.
[Swift] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค LV.1 ๊ธฐ์‚ฌ๋‹จ์›์˜ ๋ฌด๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค LV.1 ๋ชจ์Œ ๊ธฐ์‚ฌ๋‹จ์›์˜ ๋ฌด๊ธฐ ๋ฌธ์ œ ์„ค๋ช… ์ˆซ์ž๋‚˜๋ผ ๊ธฐ์‚ฌ๋‹จ์˜ ๊ฐ ๊ธฐ์‚ฌ์—๊ฒŒ๋Š” 1๋ฒˆ๋ถ€ํ„ฐ number๊นŒ์ง€ ๋ฒˆํ˜ธ๊ฐ€ ์ง€์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์‚ฌ๋“ค์€ ๋ฌด๊ธฐ์ ์—์„œ ๋ฌด๊ธฐ๋ฅผ ๊ตฌ๋งคํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ๊ธฐ์‚ฌ๋Š” ์ž์‹ ์˜ ๊ธฐ์‚ฌ ๋ฒˆํ˜ธ์˜ ์•ฝ์ˆ˜ ๊ฐœ์ˆ˜์— ํ•ด๋‹นํ•˜๋Š” ๊ณต๊ฒฉ๋ ฅ์„ ๊ฐ€์ง„ ๋ฌด๊ธฐ๋ฅผ ๊ตฌ๋งคํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ, ์ด์›ƒ๋‚˜๋ผ์™€์˜ ํ˜‘์•ฝ์— ์˜ํ•ด ๊ณต๊ฒฉ๋ ฅ์˜ ์ œํ•œ์ˆ˜์น˜๋ฅผ ์ •ํ•˜๊ณ , ์ œํ•œ์ˆ˜์น˜๋ณด๋‹ค ํฐ ๊ณต๊ฒฉ๋ ฅ์„ ๊ฐ€์ง„ ๋ฌด๊ธฐ๋ฅผ ๊ตฌ๋งคํ•ด์•ผ ํ•˜๋Š” ๊ธฐ์‚ฌ๋Š” ํ˜‘์•ฝ๊ธฐ๊ด€์—์„œ ์ •ํ•œ ๊ณต๊ฒฉ๋ ฅ์„ ๊ฐ€์ง€๋Š” ๋ฌด๊ธฐ๋ฅผ ๊ตฌ๋งคํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 15๋ฒˆ์œผ๋กœ ์ง€์ •๋œ ๊ธฐ์‚ฌ๋‹จ์›์€ 15์˜ ์•ฝ์ˆ˜๊ฐ€ 1, 3, 5, 15๋กœ 4๊ฐœ ์ด๋ฏ€๋กœ, ๊ณต๊ฒฉ๋ ฅ์ด 4์ธ ๋ฌด๊ธฐ๋ฅผ ๊ตฌ๋งคํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ, ์ด์›ƒ๋‚˜๋ผ์™€์˜ ํ˜‘์•ฝ์œผ๋กœ ์ •ํ•ด์ง„ ๊ณต๊ฒฉ๋ ฅ์˜ ์ œํ•œ์ˆ˜์น˜๊ฐ€ 3์ด๊ณ  ์ œํ•œ์ˆ˜์น˜๋ฅผ ์ดˆ๊ณผํ•œ ๊ธฐ์‚ฌ๊ฐ€ ์‚ฌ์šฉํ•  ๋ฌด๊ธฐ์˜ ๊ณต๊ฒฉ๋ ฅ์ด 2๋ผ๋ฉด, 15๋ฒˆ์œผ๋กœ ์ง€.. 2023. 3. 15.
[์ž๋ฃŒ๊ตฌ์กฐ] ์šฐ์„ ์ˆœ์œ„ ํ(Priority Queue) ์šฐ์„ ์ˆœ์œ„ ํ(Priority) ์ˆœ์„œ์— ์ƒ๊ด€์—†์ด ์šฐ์„ ์ˆ˜์œ„๊ฐ€ ๋†’์€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋จผ์ € ๋‚˜๊ฐ€๋Š” ํ˜•ํƒœ์˜ ์ž๋ฃŒ๊ตฌ์กฐ ์šฐ์„ ์ˆœ์œ„ ๋Œ€๊ธฐ์—ด์ด๋ผ๊ณ ๋„ ํ•จ ๋Œ€๊ธฐ์—ด์—์„œ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ์š”์†Œ๊ฐ€ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ์š”์†Œ๋ณด๋‹ค ๋จผ์ € ์ œ๊ณต๋˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ ์ผ๋ฐ˜์ ์œผ๋กœ ํž™(Heap)์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„ ๋ชจ๋“  ํ•ญ๋ชฉ์—๋Š” ์šฐ์„ ์ˆœ์œ„๊ฐ€ ์žˆ์Œ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ์š”์†Œ๋Š” ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ์š”์†Œ๋ณด๋‹ค ๋จผ์ € ํ์—์„œ ์ œ์™ธ ๋‘ ์š”์†Œ์˜ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ™์€ ๊ฒฝ์šฐ ํ์˜ ์ˆœ์„œ์— ๋”ฐ๋ผ ์ œ๊ณต ์šฐ์„ ์ˆœ์œ„ ํ ๊ตฌํ˜„ ๋ฐฉ๋ฒ• ๋ฐฐ์—ด, ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ, ํž™์„ ์ด์šฉํ•˜์—ฌ ๊ตฌํ˜„ ๊ฐ€๋Šฅ ๊ตฌํ˜„ ๋ฐฉ๋ฒ• ์‚ฝ์ž… (enqueue) ์‚ญ์ œ (denqueue) ๋ฐฐ์—ด (unsorted array) O(1) O(N) ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ (unsorted linked list) O(1) O(N) ์ •๋ ฌ๋œ ๋ฐฐ์—ด (sorted array) O(N) O(1) .. 2023. 3. 13.
[์ž๋ฃŒ๊ตฌ์กฐ] ํž™(Heap) ํž™(Heap) ์™„์ „ ์ด์ง„ํŠธ๋ฆฌ ๊ธฐ๋ฐ˜์˜ ์ž๋ฃŒ๊ตฌ์กฐ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ’๋“ค ์ค‘์—์„œ ์ตœ๋Œ“๊ฐ’์ด๋‚˜ ์ตœ์†Ÿ๊ฐ’์„ ๋น ๋ฅด๊ฒŒ ์ฐพ์•„๋‚ด๋„๋ก ๋งŒ๋“ค์–ด์ง„ ์ž๋ฃŒ๊ตฌ์กฐ ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ์ž๋ฃŒ๊ตฌ์กฐ ๋ฐ˜์ •๋ ฌ์ƒํƒœ(๋А์Šจํ•œ ์ •๋ ฌ์ƒํƒœ) ์œ ์ง€ ํฐ ๊ฐ’์ด ์ƒ์œ„์— ์žˆ๊ณ  ์ž‘์€ ๊ฐ’์ด ํ•˜์œ„์— ์žˆ๋Š” ์ •๋„ ์ค‘๋ณต๋œ ๊ฐ’ ํ—ˆ์šฉ ํž™์˜ ์ข…๋ฅ˜ ์ตœ๋Œ€ ํž™(max heap) ๋ถ€๋ชจ ๋…ธ๋“œ์˜ ํ‚ค ๊ฐ’์ด ์ž์‹๋…ธ๋“œ์˜ ํ‚ค ๊ฐ’๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€ ์™„์ „ ์ด์ง„ํŠธ๋ฆฌ ์ตœ์†Œ ํž™(min heap) ๋ถ€๋ชจ ๋…ธ๋“œ์˜ ํ‚ค ๊ฐ’์ด ์ž์‹ ๋…ธ๋“œ์˜ ํ‚ค ๊ฐ’ ๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ด์ง„ํŠธ๋ฆฌ ํž™์˜ ํ™œ์šฉ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์‹œ์Šคํ…œ ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ ์ œ์–ด ์šด์˜ ์ฒด์ œ์—์„œ์˜ ์ž‘์—… ์Šค์ผ€์ฅด๋ง ์ˆ˜์น˜ ํ•ด์„์ ์ธ ๊ณ„์‚ฐ ํž™์˜ ๊ตฌํ˜„ ํž™์„ ์ €์žฅํ•˜๋Š” ํ‘œ์ค€์ ์ธ ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ๋ฐฐ์—ด ๊ตฌํ˜„์„ ์‰ฝ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ์ธ๋ฑ์Šค์ธ 0์€ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Œ ํŠน์ • ์œ„์น˜์˜ ๋…ธ๋“œ ๋ฒˆํ˜ธ๋Š” ์ƒˆ๋กœ์šด.. 2023. 3. 13.
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค LV.1] ๊ณผ์ผ ์žฅ์ˆ˜ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค LV.1 ๋ชจ์Œ ๊ณผ์ผ ์žฅ์ˆ˜ ๋ฌธ์ œ ์„ค๋ช… ๊ณผ์ผ ์žฅ์ˆ˜๊ฐ€ ์‚ฌ๊ณผ ์ƒ์ž๋ฅผ ํฌ์žฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ๊ณผ๋Š” ์ƒํƒœ์— ๋”ฐ๋ผ 1์ ๋ถ€ํ„ฐ k์ ๊นŒ์ง€์˜ ์ ์ˆ˜๋กœ ๋ถ„๋ฅ˜ํ•˜๋ฉฐ, k์ ์ด ์ตœ์ƒํ’ˆ์˜ ์‚ฌ๊ณผ์ด๊ณ  1์ ์ด ์ตœํ•˜ํ’ˆ์˜ ์‚ฌ๊ณผ์ž…๋‹ˆ๋‹ค. ์‚ฌ๊ณผ ํ•œ ์ƒ์ž์˜ ๊ฐ€๊ฒฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค. ํ•œ ์ƒ์ž์— ์‚ฌ๊ณผ๋ฅผ m ๊ฐœ์”ฉ ๋‹ด์•„ ํฌ์žฅํ•ฉ๋‹ˆ๋‹ค. ์ƒ์ž์— ๋‹ด๊ธด ์‚ฌ๊ณผ ์ค‘ ๊ฐ€์žฅ ๋‚ฎ์€ ์ ์ˆ˜๊ฐ€ p (1 ≤ p ≤ k)์ ์ธ ๊ฒฝ์šฐ, ์‚ฌ๊ณผ ํ•œ ์ƒ์ž์˜ ๊ฐ€๊ฒฉ์€ p * m์ž…๋‹ˆ๋‹ค. ๊ณผ์ผ ์žฅ์ˆ˜๊ฐ€ ๊ฐ€๋Šฅํ•œ ๋งŽ์€ ์‚ฌ๊ณผ๋ฅผ ํŒ”์•˜์„ ๋•Œ, ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์ด์ต์„ ๊ณ„์‚ฐํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.(์‚ฌ๊ณผ๋Š” ์ƒ์ž ๋‹จ์œ„๋กœ๋งŒ ํŒ๋งคํ•˜๋ฉฐ, ๋‚จ๋Š” ์‚ฌ๊ณผ๋Š” ๋ฒ„๋ฆฝ๋‹ˆ๋‹ค) ์˜ˆ๋ฅผ ๋“ค์–ด, k = 3, m = 4, ์‚ฌ๊ณผ 7๊ฐœ์˜ ์ ์ˆ˜๊ฐ€ [1, 2, 3, 1, 2, 3, 1]์ด๋ผ๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™์ด [2, 3, 2, 3]์œผ๋กœ ๊ตฌ์„ฑ๋œ ์‚ฌ.. 2023. 3. 13.
๋ฐ˜์‘ํ˜•