[Python] ํ€ต ์ •๋ ฌ (Quick Sort)

์„ ํƒ ์ •๋ ฌ, ๋ฒ„๋ธ” ์ •๋ ฌ, ์‚ฝ์ž… ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋ชจ๋‘ ์‹œ๊ฐ„ ๋ณต์žก๋„ O(N^2)์„ ๊ฐ€์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์ปค์ง€๋ฉด ์‚ฌ์šฉํ•˜๊ธฐ๊ฐ€ ์–ด๋ ค์šด ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ๊ทธ๋ž˜์„œ ๋”์šฑ ๋น ๋ฅธ ์ •๋ ฌ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์‚ฌ์šฉ๋  ํ•„์š”๊ฐ€ ์žˆ๋‹ค. ํ€ต ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋Œ€ํ‘œ์ ์ธ '๋ถ„ํ•  ์ •๋ ฌ' ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ํ‰๊ท ์†๋„๊ฐ€ O(N * logN)์ด๋‹ค. ํ€ต ์ •๋ ฌ์€ ํ•˜๋‚˜์˜ ํฐ ๋ฌธ์ œ๋ฅผ ๋‘๊ฐœ์˜ ์ž‘์€ ๋ฌธ์ œ๋กœ ๋ถ„ํ• ํ•˜๋Š” ์‹์œผ๋กœ ๋น ๋ฅด๊ฒŒ ์ •๋ ฌํ•œ๋‹ค. ํŠน์ •ํ•œ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ํฐ ์ˆซ์ž์™€ ์ž‘์€ ์ˆซ์ž๋ฅผ ์„œ๋กœ ๊ตํ™˜ํ•œ ๋’ค์— ๋ฐฐ์—ด์„ ๋ฐ˜์œผ๋กœ ๋‚˜๋ˆˆ๋‹ค. ํŠน์ •ํ•œ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ํฐ ์ˆซ์ž์™€ ์ž‘์€ ์ˆซ์ž๋ฅผ ๋‚˜๋ˆˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ํ€ต์ •๋ ฌ์—์„œ๋Š” ๊ธฐ์ค€๊ฐ’์ด ์žˆ๋‹ค. ์ด๋ฅผ ํ”ผ๋ฒ—(Pivot)์ด๋ผ ํ•œ๋‹ค. ๋ณดํ†ต ๊ฐ€์žฅ ์•ž์— ์žˆ๋Š” ๊ฐ’์„ ํ”ผ๋ฒ—๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. 3 7 8 1 5 9 6 10 2 4 -> 3 2 8 1 5 9 6 10 7 4 ..

[Python] ์„ ํƒ ์ •๋ ฌ (Selection Sort)

๊ฐ€์žฅ ์ž‘์€ ๊ฒƒ์„ ์„ ํƒํ•ด์„œ ์ œ์ผ ์•ž์œผ๋กœ ๋ณด๋‚ธ๋‹ค. ๋‹ค์Œ 10๊ฐœ์˜ ์ˆ˜๋ฅผ ์˜ค๋ฆ„ ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ด๋ณด์ž 1 10 5 8 7 6 4 3 2 9 ๊ฐ€์žฅ ์ž‘์€ ์ˆซ์ž 1์€ ๊ฐ€์žฅ ์•ž์ชฝ์— ์žˆ์œผ๋‹ˆ ์ •๋ ฌ์ด ๋œ ๊ฒƒ 1 10 5 8 7 6 4 3 2 9 -> 1 2 5 8 7 6 4 3 10 9 1์„ ์ œ์™ธํ•˜๊ณ  ๋‚˜๋จธ์ง€ ์ค‘์—์„œ ๊ฐ€์žฅ ์ž‘์€ ์ˆซ์ž 2๋ฅผ ๊ฐ€์žฅ ์•ž์— ์žˆ๋Š” 10๊ณผ ๋ฐ”๊พผ๋‹ค. 1 2 5 8 7 6 4 3 10 9 -> 1 2 3 8 7 6 4 5 10 9 ๊ทธ ๋‹ค์Œ ๊ฐ€์žฅ ์ž‘์€ ์ˆซ์ž 3์„ ๊ฐ€์žฅ ์•ž์˜ ์ˆซ์ž 5์™€ ๋ฐ”๊พผ๋‹ค. ์ด๋Ÿฐ ์‹์œผ๋กœ ์ •๋ ฌ์„ ํ•˜๋Š” ๊ฒƒ์ด ์„ ํƒ์ •๋ ฌ ํŒŒ์ด์ฌ ์ฝ”๋“œ # ์„ ํƒ์ •๋ ฌ (Selection Sort) # i์™€ j๋Š” ๋ฐฐ์—ด์— ์›์†Œ๋“ค์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ํƒ์ƒ‰ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ # min ์ตœ์†Œ๊ฐ’ ์˜๋ฏธ # index ๊ฐ€์žฅ ์ž‘์€ ์›์†Œ๊ฐ€ ์กด์žฌํ•˜๋Š” ์œ„์น˜..

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์Šคํ‚ฌํŠธ๋ฆฌ

๋ฌธ์ œ ์„ค๋ช… ์„ ํ–‰ ์Šคํ‚ฌ์ด๋ž€ ์–ด๋–ค ์Šคํ‚ฌ์„ ๋ฐฐ์šฐ๊ธฐ ์ „์— ๋จผ์ € ๋ฐฐ์›Œ์•ผ ํ•˜๋Š” ์Šคํ‚ฌ์„ ๋œปํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์„ ํ–‰ ์Šคํ‚ฌ ์ˆœ์„œ๊ฐ€ ์ŠคํŒŒํฌ → ๋ผ์ดํŠธ๋‹ ๋ณผํŠธ → ์ฌ๋”์ผ๋•Œ, ์ฌ๋”๋ฅผ ๋ฐฐ์šฐ๋ ค๋ฉด ๋จผ์ € ๋ผ์ดํŠธ๋‹ ๋ณผํŠธ๋ฅผ ๋ฐฐ์›Œ์•ผ ํ•˜๊ณ , ๋ผ์ดํŠธ๋‹ ๋ณผํŠธ๋ฅผ ๋ฐฐ์šฐ๋ ค๋ฉด ๋จผ์ € ์ŠคํŒŒํฌ๋ฅผ ๋ฐฐ์›Œ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์œ„ ์ˆœ์„œ์— ์—†๋Š” ๋‹ค๋ฅธ ์Šคํ‚ฌ(ํž๋ง ๋“ฑ)์€ ์ˆœ์„œ์— ์ƒ๊ด€์—†์ด ๋ฐฐ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ŠคํŒŒํฌ → ํž๋ง → ๋ผ์ดํŠธ๋‹ ๋ณผํŠธ → ์ฌ๋”์™€ ๊ฐ™์€ ์Šคํ‚ฌํŠธ๋ฆฌ๋Š” ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์ฌ๋” → ์ŠคํŒŒํฌ๋‚˜ ๋ผ์ดํŠธ๋‹ ๋ณผํŠธ → ์ŠคํŒŒํฌ → ํž๋ง → ์ฌ๋”์™€ ๊ฐ™์€ ์Šคํ‚ฌํŠธ๋ฆฌ๋Š” ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์„ ํ–‰ ์Šคํ‚ฌ ์ˆœ์„œ skill๊ณผ ์œ ์ €๋“ค์ด ๋งŒ๋“  ์Šคํ‚ฌํŠธ๋ฆฌ1๋ฅผ ๋‹ด์€ ๋ฐฐ์—ด skill_trees๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ๊ฐ€๋Šฅํ•œ ์Šคํ‚ฌํŠธ๋ฆฌ ๊ฐœ์ˆ˜๋ฅผ return ํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ์ œํ•œ ์กฐ๊ฑด ..

์ •๋ ฌ(Sort), ํƒ์ƒ‰(Search)

์ •๋ ฌ(sort) ์ด๋ž€? ๋ณต์ˆ˜์˜ ์›์†Œ๋กœ ์ฃผ์–ด์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ์ •ํ•ด์ง„ ๊ธฐ์ค€์— ๋”ฐ๋ผ ์ƒˆ๋กœ ๋Š˜์–ด๋†“๋Š” ์ž‘์—…์ด๋‹ค. ํŒŒ์ด์ฌ์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ด์šฉํ•˜๋ฉด ์ง์ ‘ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. ํŒŒ์ด์ฌ ๋‚ด์žฅ ํ•จ์ˆ˜ sorted() ๋ฆฌ์ŠคํŠธ์— ์“ธ ์ˆ˜ ์žˆ๋Š” ๋ฉ”์„œ๋“œ .sort() ์ •๋ ฌ์˜ ์ˆœ์„œ๋ฅผ ๋ฐ˜๋Œ€๋กœํ•˜๊ธธ ์›ํ•  ๋•Œ ์ธ์ž๋กœ reverse = True๋ฅผ ๋„ฃ์–ด์ค€๋‹ค. ๋ฌธ์ž์—ด๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฆฌ์ŠคํŠธ์˜ ๊ฒฝ์šฐ ์ •๋ ฌ ์ˆœ์„œ๋Š” ์‚ฌ์ „์ˆœ์„œ(์•ŒํŒŒ๋ฒณ ์ˆœ์„œ)๋ฅผ ๋”ฐ๋ฅธ๋‹ค. ๋ฌธ์ž์—ด ๊ธธ์ด๊ฐ€ ๊ธด ๊ฒƒ์ด๋ผ๊ณ  ํ•ด์„œ ๋” ํฐ ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด ๊ธธ์ด ์ˆœ์„œ๋กœ ์ •๋ ฌํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์ •๋ ฌ์— ์ด์šฉํ•˜๋Š” ํ‚ค(key)๋ฅผ ์ง€์ •ํ•ด์ค€๋‹ค. L = ['abcd', 'xyz', 'spam'] # ๋ฌธ์ž์—ด ๊ธธ์ด๋กœ ์ •๋ ฌ sorted(L, key=lambda x: len(x)) L = [ {'name': 'john', 's..

์„ ํ˜• ๋ฐฐ์—ด (Linear Arrays)

์„ ํ˜• ๋ฐฐ์—ด์€ ๋ฐ์ดํ„ฐ๋“ค์ด ์„  (line) ์ฒ˜๋Ÿผ ์ผ๋ ฌ๋กœ ๋Š˜์–ด์„  ํ˜•ํƒœ๋ฅผ ๋งํ•œ๋‹ค. ๋ณดํ†ต ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ๋ฐฐ์—ด์ด๋ผ๊ณ  ํ•˜๋ฉด ๊ฐ™์€ ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ค„์ง€์–ด ๋Š˜์–ด์„œ ์žˆ๋Š”๊ฒƒ์„ ๋œปํ•œ๋‹ค. python์—์„œ๋Š” ๋ฆฌ์ŠคํŠธ๋ผ๋Š” ๋ฐ์ดํ„ฐํ˜•์ด ์žˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ๋Š˜์–ด๋†“์€ ๋ชจ์–‘์ƒˆ๋ฅผ ๋งํ•  ๋•Œ๋Š” ๋ฐฐ์—ด(array), ํŒŒ์ด์ฌ์˜ ๋ฐ์ดํ„ฐํ˜•์„ ๊ฐ€๋ฆฌํ‚ฌ ๋•Œ์—๋Š” ๋ฆฌ์ŠคํŠธ(list)๋ผ๋Š” ์šฉ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ฒ ๋‹ค. ๋ฆฌ์ŠคํŠธ(๋ฐฐ์—ด) ์—ฐ์‚ฐ ๋ฆฌ์ŠคํŠธ์˜ ๊ธธ์ด์™€ ๊ด€๊ณ„ ์—†์ด ๋น ๋ฅด๊ฒŒ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ฒŒ๋˜๋Š” ์—ฐ์‚ฐ๋“ค O(1) ์›์†Œ ๋ง๋ถ™์ด๊ธฐ : .append(๋ง๋ถ™์ผ ์›์†Œ) ๋์—์„œ ๊บผ๋‚ด๊ธฐ : .pop(๊บผ๋‚ด๋Š” ์›์†Œ ์œ„์น˜) ๋ฆฌ์ŠคํŠธ์˜ ๊ธธ์ด์— ๋น„๋ก€ํ•ด์„œ ์‹คํ–‰ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š” ์—ฐ์‚ฐ๋“ค O(n) ์›์†Œ ์‚ฝ์ž…ํ•˜๊ธฐ : .insert(์›์†Œ์˜ ์œ„์น˜, ์‚ฝ์ž…ํ•  ์›์†Œ) ์›์†Œ ์‚ญ์ œํ•˜๊ธฐ : del(๋ฆฌ์ŠคํŠธ์ด๋ฆ„[์‚ญ์ œํ•  ์›์†Œ์˜ ์ธ๋ฑ์Šค]) ์ถ”..