728x90

์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ 6

[Algorithm] ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜_6(ํ€ต ์ •๋ ฌ)

06-6 ํ€ต ์ •๋ ฌ ํ€ต ์ •๋ ฌ ์•Œ์•„๋ณด๊ธฐ ํ€ต ์ •๋ ฌ(quick sort): ๊ฐ€์žฅ ๋น ๋ฅธ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์œ„ ๊ทธ๋ฆผ์€ ํ€ต ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•™์ƒ ๊ทธ๋ฃน์„ ํ‚ค ์ˆœ์„œ๋กœ ์ •๋ ฌํ•˜๋Š” ๊ณผ์ •์„ ๋‚˜ํƒ€๋ƒˆ์Šต๋‹ˆ๋‹ค. ๋จผ์ € ํ‚ค๊ฐ€ 168cm์ธ ํ•™์ƒ A๋ฅผ ์„ ํƒํ•˜์—ฌ ์ด ํ•™์ƒ์„ ๊ธฐ์ค€์œผ๋กœ 168cm ๋ฏธ๋งŒ์ธ ๊ทธ๋ฃน๊ณผ 168cm ์ด์ƒ์ธ ๊ทธ๋ฃน์œผ๋กœ ๋‚˜๋ˆ•๋‹ˆ๋‹ค. ์ด๋•Œ ๊ทธ๋ฃน์„ ๋‚˜๋ˆ„๋Š” ๊ธฐ์ค€(ํ•™์ƒ A์˜ ํ‚ค)์„ ํ”ผ๋ฒ—(pivot)์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. [ํ”ผ๋ฒ—์€ ๋‹ค๋ฅธ ๋ง๋กœ ์ค‘์‹ฌ์ถ•์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ํ”ผ๋ฒ—์€ ์ž„์˜๋กœ ์„ ํƒํ•  ์ˆ˜ ์žˆ๊ณ , ์„ ํƒ๋œ ํ”ผ๋ฒ—์€ 2๊ฐœ๋กœ ๋‚˜๋ˆˆ ๊ทธ๋ฃน ์–ด๋””์— ๋„ฃ์–ด๋„ ์ƒ๊ด€์—†์Šต๋‹ˆ๋‹ค.] ๋‹ค์‹œ ๊ฐ ๊ทธ๋ฃน์—์„œ ํ”ผ๋ฒ—์„ ์„ ํƒํ•˜์—ฌ ๋‚˜๋ˆ„๊ธฐ๋ฅผ ๋ฐ˜๋ณตํ•˜๋ฉฐ ๋ชจ๋“  ๊ทธ๋ฃน์ด 1๋ช…์”ฉ ๋‚จ์œผ๋ฉด ์ •๋ ฌ์ด ์™„๋ฃŒ๋ฉ๋‹ˆ๋‹ค. ๋ฐฐ์—ด์„ ๋‘ ๊ทธ๋ฃน์œผ๋กœ ๋‚˜๋ˆ„๊ธฐ ๋จผ์ € ํ”ผ๋ฒ—์„ x, ์™ผ์ชฝ ๋ ์›์†Œ์˜ ์ธ๋ฑ์Šค๋ฅผ pl(์™ผ์ชฝ ์ปค์„œ), ์˜ค..

Code/Algorithm 2023.01.08

[Algorithm] ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜_5(์…ธ ์ •๋ ฌ)

06-5 ์…ธ ์ •๋ ฌ ๋‹จ์ˆœ ์‚ฝ์ž… ์ •๋ ฌ์˜ ํŠน์ง• ์žฅ์ : ์ด๋ฏธ ์ •๋ ฌ์„ ๋งˆ์ณค๊ฑฐ๋‚˜ ์ •๋ ฌ์ด ๊ฑฐ์˜ ๋๋‚˜๊ฐ€๋Š” ์ƒํƒœ์—์„œ๋Š” ์†๋„๊ฐ€ ์•„์ฃผ ๋น ๋ฆ…๋‹ˆ๋‹ค. ๋‹จ์ : ์‚ฝ์ž…ํ•  ์œ„์น˜๊ฐ€ ๋ฉ€๋ฆฌ ๋–จ์–ด์ ธ ์žˆ์œผ๋ฉด ์ด๋™ ํšŸ์ˆ˜๊ฐ€ ๋งŽ์•„์ง‘๋‹ˆ๋‹ค. ์…ธ ์ •๋ ฌ ์•Œ์•„๋ณด๊ธฐ ์…ธ ์ •๋ ฌ(shell sort): ๋‹จ์ˆœ ์‚ฝ์ž… ์ •๋ ฌ์˜ ์žฅ์ ์€ ์‚ด๋ฆฌ๊ณ  ๋‹จ์ ์€ ๋ณด์™„ํ•˜์—ฌ ๋” ๋น ๋ฅด๊ฒŒ ์ •๋ ฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์…ธ ์ •๋ ฌ์€ ๋‹จ์ˆœ ์‚ฝ์ž… ์ •๋ ฌ์˜ ์žฅ์ ์„ ์‚ด๋ฆฌ๊ณ  ๋‹จ์ ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ •๋ ฌ ํšŸ์ˆ˜๋Š” ๋Š˜์–ด๋‚˜์ง€๋งŒ ์ „์ฒด์ ์œผ๋กœ ์›์†Œ์˜ ์ด๋™ ํšŸ์ˆ˜๊ฐ€ ์ค„์–ด๋“ค์–ด ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค. ์‹ค์Šต 6-8 ์…ธ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฌํ˜„ํ•˜๊ธฐ # ์…ธ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฌํ˜„ํ•˜๊ธฐ from typing import MutableSequence def shell_sort(a: MutableSequence) -> None: """์…ธ ์ •๋ ฌ""" n = l..

Code/Algorithm 2023.01.08

[Algorithm] ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜_4(๋‹จ์ˆœ ์‚ฝ์ž… ์ •๋ ฌ)

06-4 ๋‹จ์ˆœ ์‚ฝ์ž… ์ •๋ ฌ ๋‹จ์ˆœ ์‚ฝ์ž… ์ •๋ ฌ ์•Œ์•„๋ณด๊ธฐ ๋‹จ์ˆœ ์‚ฝ์ž… ์ •๋ ฌ(straight insertion sort): ์ฃผ๋ชฉํ•œ ์›์†Œ๋ณด๋‹ค ๋” ์•ž์ชฝ์—์„œ ์•Œ๋งž์€ ์œ„์น˜๋กœ ์‚ฝ์ž…ํ•˜๋ฉฐ ์ •๋ ฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋‹จ์ˆœ ์„ ํƒ ์ •๋ ฌ๊ณผ ๋น„์Šทํ•ด ๋ณด์ด์ง€๋งŒ ๊ฐ’์ด ๊ฐ€์žฅ ์ž‘์€ ์›์†Œ๋ฅผ ์„ ํƒํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์ •๋ ฌ๋œ ๋ถ€๋ถ„๊ณผ ์•„์ง ์ •๋ ฌ๋˜์ง€ ์•Š์€ ๋ถ€๋ถ„์—์„œ ๋‹ค์‹œ ๋ฐฐ์—ด์„ ๊ตฌ์„ฑํ•  ๊ฒฝ์šฐ์—๋Š” ๋‹ค์Œ ์ž‘์—…์„ n - 1๋ฒˆ ๋ฐ˜๋ณตํ•˜๋ฉด ์ •๋ ฌ์ด ์™„๋ฃŒ๋ฉ๋‹ˆ๋‹ค. ์•„์ง ์ •๋ ฌ๋˜์ง€ ์•Š์€ ๋ถ€๋ถ„์˜ ๋งจ ์•ž ์›์†Œ๋ฅผ ์ •๋ ฌ๋œ ๋ถ€๋ถ„์˜ ์•Œ๋งž์€ ์œ„์น˜์— ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ˆœ ์‚ฝ์ž… ์ •๋ ฌ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ์š”๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. for i in range(1, n): tmp ← a[i]๋ฅผ ๋„ฃ์Šต๋‹ˆ๋‹ค. tmp๋ฅผ a[0], ···, a[i -1]์˜ ์•Œ๋งž์€ ์œ„์น˜์— ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค. ์œ„ ๊ทธ๋ฆผ์—์„œ ๋ฐ˜๋ณต ์ œ์–ด ๋ณ€์ˆ˜ j์— i..

Code/Algorithm 2022.12.26

[Algorithm] ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜_3(๋‹จ์ˆœ ์„ ํƒ ์ •๋ ฌ)

06-3 ๋‹จ์ˆœ ์„ ํƒ ์ •๋ ฌ ๋‹จ์ˆœ ์„ ํƒ ์ •๋ ฌ ์•Œ์•„๋ณด๊ธฐ ๋‹จ์ˆœ ์„ ํƒ ์ •๋ ฌ(straight selection sort): ๊ฐ€์žฅ ์ž‘์€ ์›์†Œ๋ถ€ํ„ฐ ์„ ํƒํ•ด ์•Œ๋งž์€ ์œ„์น˜๋กœ ์˜ฎ๊ธฐ๋Š” ์ž‘์—…์„ ๋ฐ˜๋ณตํ•˜๋ฉฐ ์ •๋ ฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋‹จ์ˆœ ์„ ํƒ ์ •๋ ฌ์—์„œ ๊ตํ™˜ ๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์•„์ง ์ •๋ ฌํ•˜์ง€ ์•Š์€ ๋ถ€๋ถ„์—์„œ ๊ฐ’์ด ๊ฐ€์žฅ ์ž‘์€ ์›์†Œ a[min]์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. a[min]๊ณผ ์•„์ง ์ •๋ ฌํ•˜์ง€ ์•Š์€ ๋ถ€๋ถ„์—์„œ ๋งจ ์•ž์— ์žˆ๋Š” ์›์†Œ๋ฅผ ๊ตํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์„ n - 1๋ฒˆ ๋ฐ˜๋ณตํ•˜๋ฉด ์ •๋ ฌํ•˜์ง€ ์•Š์€ ๋ถ€๋ถ„์ด ์—†์–ด์ง€๋ฉด์„œ ์ •์ฒด ์ •๋ ฌ์„ ์™„๋ฃŒํ•ฉ๋‹ˆ๋‹ค. ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ฐœ์š”๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. for i in range(n - 1): min# a[i], ···, a[n-1]์—์„œ ํ‚ค๊ฐ’์ด ๊ฐ€์žฅ ์ž‘์€ ์›์†Œ์˜ ์ธ๋ฑ์Šค a[i]์™€ a[min]์˜ ๊ฐ’์„ ๊ตํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์‹ค์Šต 6-6 ๋‹จ์ˆœ ์„ ํƒ ..

Code/Algorithm 2022.12.26

[Algorithm] ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜_2(๋ฒ„๋ธ” ์ •๋ ฌ)

06-2 ๋ฒ„๋ธ” ์ •๋ ฌ ๋ฒ„๋ธ” ์ •๋ ฌ(bubble sort): ์ด์›ƒํ•œ ๋‘ ์›์†Œ์˜ ๋Œ€์†Œ ๊ด€๊ณ„๋ฅผ ๋น„๊ตํ•˜์—ฌ ํ•„์š”์— ๋”ฐ๋ผ ๊ตํ™˜์„ ๋ฐ˜๋ณตํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ, ๋‹จ์ˆœ ๊ตํ™˜ ์ •๋ ฌ์ด๋ผ๊ณ ๋„ ํ•ฉ๋‹ˆ๋‹ค. ๋ฒ„๋ธ” ์ •๋ ฌ ์•Œ์•„๋ณด๊ธฐ ์œ„ ๊ทธ๋ฆผ์€ ์ด์›ƒํ•œ ์›์†Œ๋ฅผ ๋น„๊ตํ•˜๊ณ , ํ•„์š”ํ•˜๋ฉด ๊ตํ™˜ํ•˜๋Š” ์ „์ฒด ์ž‘์—… ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ์ด๋•Œ ์›์†Œ ์ˆ˜๊ฐ€ n์ธ ๋ฐฐ์—ด์—์„œ n -1๋ฒˆ ๋น„๊ต·๊ตํ™˜์„ ํ•˜๋ฉด ๊ฐ€์žฅ ์ž‘์€ ์›์†Œ 1์ด ๋งจ ์•ž์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ผ๋ จ์˜ ๋น„๊ต·๊ตํ™˜ํ•˜๋Š” ๊ณผ์ •์„ ํŒจ์Šค(pass)๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋ฒ„๋ธ” ์ •๋ ฌ ํ”„๋กœ๊ทธ๋žจ ์‹ค์Šต 6-1 ๋ฒ„๋ธ” ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฌํ˜„ํ•˜๊ธฐ ์ด ํ”„๋กœ๊ทธ๋žจ์€ n๊ฐœ์˜ ์›์†Œ ์ˆ˜์™€ ๊ฐ๊ฐ์˜ ์›์†Ÿ๊ฐ’์„ ์ž…๋ ฅ๋ฐ›์Šต๋‹ˆ๋‹ค. i๊ฐ’์„ 0๋ถ€ํ„ฐ n - 2๊นŒ์ง€ 1์”ฉ ์ฆ๊ฐ€์‹œํ‚ค๊ณ , ํŒจ์Šค๋ฅผ n - 1๋ฒˆ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. # ๋ฒ„๋ธ” ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฌํ˜„ํ•˜๊ธฐ from typing import Mutab..

Code/Algorithm 2022.12.19

[Algorithm] ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜_1

06-1 ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ •๋ ฌ์ด๋ž€? ์ •๋ ฌ(sorting): ์ด๋ฆ„, ํ•™๋ฒˆ, ํ•™์  ๋“ฑ์˜ ํ‚ค(key)๋ฅผ ํ•ญ๋ชฉ๊ฐ’์˜ ๋Œ€์†Œ ๊ด€๊ณ„์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์„ ์ผ์ •ํ•œ ์ˆœ์„œ๋กœ ๋ฐ”๊พธ์–ด ๋Š˜์—ฌ๋†“๋Š” ์ž‘์—…์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋ฆ„์ฐจ์ˆœ(ascending order): ๊ฐ’์ด ์ž‘์€ ๋ฐ์ดํ„ฐ๋ฅผ ์•ž์ชฝ์— ๋Š˜์–ด๋†“๋Š” ๊ฒƒ ๋‚ด๋ฆผ์ฐจ์ˆœ(descending order): ๊ฐ’์ด ํฐ ๋ฐ์ดํ„ฐ๋ฅผ ์•ž์ชฝ์— ๋Š˜์–ด๋†“๋Š” ๊ฒƒ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์•ˆ์ •์„ฑ ์•ˆ์ •์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜: ๊ฐ’์ด ๊ฐ™์€ ์›์†Œ์˜ ์ˆœ์„œ๊ฐ€ ์ •๋ ฌํ•œ ํ›„์—๋„ ์œ ์ง€๋˜๋Š” ๊ฒƒ ์•ˆ์ •์ ์ด์ง€ ์•Š์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜: ์ •๋ ฌํ•œ ํ›„์—๋„ ์šฐ๋„ˆ๋ž˜์˜ ์ˆœ์„œ๊ฐ€ ์œ ์ง€๋œ๋‹ค๋Š” ๋ณด์žฅ์„ ํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ ๋‚ด๋ถ€ ์ •๋ ฌ๊ณผ ์™ธ๋ถ€ ์ •๋ ฌ ๋‚ด๋ถ€ ์ •๋ ฌ(internal sorting): ์ •๋ ฌํ•  ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜์˜ ๋ฐฐ์—ด์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์™ธ๋ถ€ ์ •๋ ฌ(external sort..

Code/Algorithm 2022.12.19
728x90