๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋ก์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (5)

DATA101

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด ์ „๋žต!

๋ณธ ํฌ์ŠคํŒ…์—์„œ๋Š” ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด ์ „๋žต์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ•ด๊ฒฐ ์ „๋žต ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด์— ์žˆ์–ด์„œ ํŠน๋ณ„ํžˆ ๋ฌธ์ œ์—์„œ ์š”๊ตฌ์‚ฌํ•ญ์ด ์—†์„ ๊ฒฝ์šฐ, ๋‹จ์ˆœํžˆ ์ •๋ ฌ์ด ํ•„์š”ํ•œ ์ƒํ™ฉ์—์„œ๋Š” ๊ธฐ๋ณธ ๋‚ด์žฅ ์ •๋ ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ™œ์šฉํ•˜์‹œ๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ, ๋ฐ์ดํ„ฐ์˜ ๋ฒ”์œ„๊ฐ€ ํ•œ์ •๋˜์–ด ์žˆ๊ณ  ๋”์šฑ ๋น ๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๋„๋ก ๋ฌธ์ œ๋ฅผ ํ’€์–ด์•ผ ํ•œ๋‹ค๋ฉด ๊ณ„์ˆ˜ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ™œ์šฉํ•˜์‹œ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด์ฒ˜๋Ÿผ ์•„๋ž˜์— ์ฃผ์–ด์ง„ ์ƒํ™ฉ์— ๋งž๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด ์ „๋žต์„ ์ •๋ฆฌํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค. (1) ์ •๋ ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ™œ์šฉ ๋ฌธ์ œ ๋‹จ์ˆœํžˆ ๋‚ด์žฅ ์ •๋ ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•ด ์•Œ๊ณ  ์žˆ๊ณ  ์‚ฌ์šฉํ•  ์ค„ ์•„๋Š”์ง€ ๋ฌป๊ธฐ ์œ„ํ•œ ๋ฌธ์ œ ์œ ํ˜•์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‚ด์žฅ ์ •๋ ฌ ํ•จ์ˆ˜ ์‚ฌ์šฉ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๊ธฐ๋ณธ์ ์ธ ๋ถ€๋ถ„๋“ค์— ๋Œ€ํ•ด ์ˆ™์ง€ํ•˜๊ณ  ์žˆ์œผ๋ฉด ์–ด๋ ต์ง€ ์•Š๊ฒŒ ๋ฌธ์ œ๋ฅผ ํ’€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (..

[ํŒŒ์ด์ฌ] ๋‚ด์žฅ ํ•จ์ˆ˜๋ฅผ ํ™œ์šฉํ•œ ๋ฐ์ดํ„ฐ ์ •๋ ฌํ•˜๊ธฐ! (sorted, sort ํ•จ์ˆ˜)

์˜ค๋Š˜์€ ํŒŒ์ด์ฌ ๋‚ด์žฅ ํ•จ์ˆ˜์ธ sorted()์™€ sort()๋ฅผ ํ™œ์šฉํ•œ ๋ฐ์ดํ„ฐ ์ •๋ ฌ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๊ณต์œ ํ•ด ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ๋ฐ”๋กœ ์‹œ์ž‘ํ•˜์ฃ ! ๋ชฉ์ฐจ 1. ๊ธฐ๋ณธ ์ •๋ ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ 2. sorted ํ•จ์ˆ˜ 3. sort ํ•จ์ˆ˜ 4. key ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํ™œ์šฉํ•œ ์ •๋ ฌ ๊ธฐ์ค€ ์„ค์ • 5. ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ•ด๊ฒฐ ์ „๋žต 1. ๊ธฐ๋ณธ ์ •๋ ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ด์ฌ์—๋Š” sorted ๋ฐ sort๋ผ๋Š” ์ •๋ ฌ ํ•จ์ˆ˜๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‚ด์žฅ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํ•จ์ˆ˜๋“ค์€ ๋ฆฌ์ŠคํŠธ, ๋”•์…”๋„ˆ๋ฆฌ, ์ง‘ํ•ฉ ๋“ฑ์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์ž…๋ ฅ๊ฐ’์œผ๋กœ ๋ฐ›๊ณ , ๋ฐ์ดํ„ฐ ํƒ€์ž…์— ์ƒ๊ด€์—†์ด ํ•ญ์ƒ ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์ด ํŠน์ง•์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ, ์ด ํ•จ์ˆ˜๋“ค์€ ์ตœ์•…์˜ ๊ฒฝ์šฐ์—๋„ O(N*log N) ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๋ณด์žฅํ•œ๋‹ค๋Š” ๊ฒƒ์ด ํŠน์ง•์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ sorted ํ•จ์ˆ˜์™€ sort ํ•จ์ˆ˜ ๊ฐ๊ฐ์—..

SW ๊ฐœ๋ฐœ/Python 2021. 3. 15. 10:45
[์•Œ๊ณ ๋ฆฌ์ฆ˜] ๊ณ„์ˆ˜ ์ •๋ ฌ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž! (+Python ๊ตฌํ˜„)

๋ณธ ํฌ์ŠคํŒ…์—์„œ๋Š” ๊ณ„์ˆ˜ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•ด ์•Œ์•„๋ด…๋‹ˆ๋‹ค. ๐Ÿ“š ๋ชฉ์ฐจ 1. ๊ณ„์ˆ˜ ์ •๋ ฌ์ด๋ž€? 2. ๊ณ„์ˆ˜ ์ •๋ ฌ์˜ ๋™์ž‘ ๊ณผ์ • 3. ๊ณ„์ˆ˜ ์ •๋ ฌ์˜ ๊ตฌํ˜„(Python) 4. ๊ณ„์ˆ˜ ์ •๋ ฌ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„ 1. ๊ณ„์ˆ˜ ์ •๋ ฌ์ด๋ž€? ๊ณ„์ˆ˜ ์ •๋ ฌ์€ ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜๊ฐ€ ๋งŽ๋”๋ผ๋„ ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๋Š” ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ํ•˜๋‚˜๋กœ์„œ ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋ชจ๋‘ ์ •์ˆ˜ ํ˜•ํƒœ๋กœ ํ‘œํ˜„๋˜์–ด ์žˆ๊ณ  ๊ฐ€์žฅ ์ž‘์€ ๋ฐ์ดํ„ฐ์™€ ๊ฐ€์žฅ ํฐ ๋ฐ์ดํ„ฐ์˜ ์ฐจ์ด๊ฐ€ 1๋ฐฑ๋งŒ(1,000,000) ์ดํ•˜์ผ ๋•Œ ํšจ๊ณผ์ ์œผ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ด์ฒ˜๋Ÿผ ํŠน์ • ์กฐ๊ฑด์ด ๋ถ€ํ•ฉํ•  ๋•Œ๋งŒ ๋™์ž‘ํ•˜๋Š” ์ด์œ ๋Š” ๊ณ„์ˆ˜ ์ •๋ ฌ์„ ํ™œ์šฉํ•  ๋•Œ๋Š” ๊ฐ€์žฅ ์ž‘์€ ๋ฐ์ดํ„ฐ๋ถ€ํ„ฐ ๊ฐ€์žฅ ํฐ ๋ฐ์ดํ„ฐ๊นŒ์ง€ ๋ชจ๋“  ๋ฒ”์œ„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ํฌ๊ธฐ์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ์„ ์–ธํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ฐ€์žฅ ์ž‘์€ ๋ฐ์ดํ„ฐ์™€ ๊ฐ€์žฅ ํฐ ๋ฐ์ดํ„ฐ์˜ ์ฐจ์ด๊ฐ€ 1,000,000์ด๋ผ๋ฉด ์ด ..

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ํ€ต ์ •๋ ฌ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž! (+Python ๊ตฌํ˜„)

๋ณธ ํฌ์ŠคํŒ…์—์„œ๋Š” ํ€ต ์ •๋ ฌ(Quick sort) ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•ด ์•Œ๋ด…๋‹ˆ๋‹ค. ๐Ÿ“š ๋ชฉ์ฐจ 1. ํ€ต ์ •๋ ฌ์ด๋ž€? 2. ํ€ต ์ •๋ ฌ์˜ ๋™์ž‘ ๊ณผ์ • 3. ํ€ต ์ •๋ ฌ ๊ตฌํ˜„(Python) 4. ํ€ต ์ •๋ ฌ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„ 1. ํ€ต ์ •๋ ฌ์ด๋ž€? ํ€ต ์ •๋ ฌ์€ ํ”ผ๋ฒ—(pivot)์ด๋ผ๋Š” ๊ธฐ์ค€ ๋ฐ์ดํ„ฐ๋ฅผ ์„ค์ •ํ•˜๊ณ  ๊ทธ ๊ธฐ์ค€ ๋ฐ์ดํ„ฐ๋ณด๋‹ค ํฐ ๋ฐ์ดํ„ฐ์™€ ์ž‘์€ ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ์ •๋ ฌ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ํ€ต ์ •๋ ฌ์€ ๋ฐ์ดํ„ฐ ๊ฐ„์˜ ๋น„๊ต๋งŒ์œผ๋กœ ์ •๋ ฌ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋น„๊ต ์ •๋ ฌ ์ค‘ ํ•˜๋‚˜๋กœ์„œ ์ด๋ฆ„์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด ์ •๋ ฌ์ด ๋น ๋ฅด๋‹ค๋Š” ํŠน์ง•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ€ต ์ •๋ ฌ์˜ ๋ฐฉ์‹์€ ํ”ผ๋ฒ—์„ ์„ค์ •ํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„ํ• ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ ๊ฐ€์ง€๋กœ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์ธ ๋ถ„ํ•  ๋ฐฉ์‹์ธ ํ˜ธ์–ด ๋ถ„ํ• (Hoare Partition)์„ ๊ธฐ์ค€์œผ๋กœ ์„ค๋ช…๋“œ๋ฆฌ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. 2. ํ€ต ์ •๋ ฌ์˜..

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์‚ฝ์ž… ์ •๋ ฌ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž! (+Python ๊ตฌํ˜„)

๋ณธ ํฌ์ŠคํŒ…์—์„œ๋Š” ์‚ฝ์ž… ์ •๋ ฌ(Insertion sort) ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•ด ์•Œ์•„๋ด…๋‹ˆ๋‹ค. ๐Ÿ“š ๋ชฉ์ฐจ 1. ์‚ฝ์ž… ์ •๋ ฌ์ด๋ž€? 2. ์‚ฝ์ž… ์ •๋ ฌ์˜ ๋™์ž‘ ๊ณผ์ • 3. ์‚ฝ์ž… ์ •๋ ฌ ๊ตฌํ˜„(Python) 4. ์‚ฝ์ž… ์ •๋ ฌ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„ 1. ์‚ฝ์ž… ์ •๋ ฌ์ด๋ž€? ์‚ฝ์ž… ์ •๋ ฌ์€ ์ •๋ ฌ์ด ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๊ณ  ์ ์ ˆํ•œ ์œ„์น˜์— ์‚ฝ์ž…ํ•˜๋ฉฐ ์ •๋ ฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. ์‚ฝ์ž… ์ •๋ ฌ์€ ํ•„์š”ํ•  ๋•Œ๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋น„๊ตํ•˜๊ณ  ์‚ฝ์ž…ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์–ด๋Š ์ •๋„ ์ •๋ ฌ๋˜์–ด ์žˆ์„ ๋•Œ ๋”์šฑ ํšจ์œจ์ ์œผ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํŠน์ง• ๋•๋ถ„์— ์ •๋ ฌ ์ƒํƒœ์™€ ์ƒ๊ด€์—†์ด ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ผ์ผ์ด ๋น„๊ตํ•˜๋ฉฐ ์ •๋ ฌํ•˜๋Š” ๋ฐฉ์‹์ธ ์„ ํƒ ์ •๋ ฌ๋ณด๋‹ค ์ผ๋ฐ˜์ ์œผ๋กœ ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค. [์•Œ๊ณ ๋ฆฌ์ฆ˜] ์„ ํƒ ์ •๋ ฌ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž! (+Python ๊ตฌํ˜„) ์˜ค๋Š˜์€ ์„ ํƒ ์ •๋ ฌ(selection sort) ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜..