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

์ด์ฝ”ํ…Œ6

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ(DP) ์ค‘๋ณต๋˜๋Š” ์—ฐ์‚ฐ์„ ์ค„์ด์ž ์ตœ์ ์˜ ํ•ด๋ฅผ ๊ตฌํ•˜๊ธฐ์— ์‹œ๊ฐ„์ด ๋งค์šฐ ๋งŽ์ด ํ•„์š”ํ•˜๊ฑฐ๋‚˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ๋งค์šฐ ๋งŽ์ด ํ•„์š”ํ•œ ๋ฌธ์ œ ๋“ฑ์ด ์ปดํ“จํ„ฐ๋กœ๋„ ํ•ด๊ฒฐํ•˜๊ธฐ ์–ด๋ ค์šด ๋ฌธ์ œ์ด๋‹ค. ์ปดํ“จํ„ฐ๋Š” ์—ฐ์‚ฐ ์†๋„์— ํ•œ๊ณ„๊ฐ€ ์žˆ๊ณ , ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์ž‡๋Š” ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜๋„ ํ•œ์ •์ ์ด๋ผ๋Š” ์ ์ด ๋งŽ์€ ์ œ์•ฝ์„ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค. โžก๏ธ ์—ฐ์‚ฐ ์†๋„๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์ตœ๋Œ€ํ•œ์œผ๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํšจ์œจ์  ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ž‘์„ฑ์˜ ํ•„์š”์„ฑ โฌ†๏ธ ์–ด๋–ค ๋ฌธ์ œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์•ฝ๊ฐ„ ๋” ์‚ฌ์šฉํ•˜๋ฉด ์—ฐ์‚ฐ ์†๋„๋ฅผ ๋น„์•ฝ์ ์œผ๋กœ ์ฆ๊ฐ€์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. ์ด๋Š” ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฒ•์œผ๋กœ ๋™์  ๊ณ„ํš๋ฒ•์ด๋ผ๊ณ  ํ‘œํ˜„ํ•˜๊ธฐ๋„ ํ•œ๋‹ค. ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€ํ‘œ์ ์ธ ์˜ˆ์‹œ๋กœ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด์ด ์žˆ๋‹ค. ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด์€ ์ด์ „ ๋‘ ํ•ญ์˜ ํ•ฉ์„ ํ˜„์žฌ์˜ ํ•ญ์œผ๋กœ ์„ค์ •ํ•˜๋Š” ํŠน์ง•์ด ์žˆ๋Š” ์ˆ˜์—ด์ด๋‹ค. ํ”ผ๋ณด๋‚˜์น˜.. 2023. 11. 28.
[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์ด์ง„ํƒ์ƒ‰ (๋ฒ”์œ„๊ฐ€ ํฐ ์ˆ˜๋ผ๋ฉด.. ์ด์ง„ํƒ์ƒ‰์ด๋‹ค!) ์ˆœ์ฐจ ํƒ์ƒ‰ ์ˆœ์ฐจ ํƒ์ƒ‰(Sequential Search)์ด๋ž€ ๋ฆฌ์ŠคํŠธ ์•ˆ์— ์žˆ๋Š” ํŠน์ •ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ์•ž์—์„œ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜์”ฉ ์ฐจ๋ก€๋Œ€๋กœ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ˆœ์ฐจ ํƒ์ƒ‰์€ ์ด๋ฆ„์ฒ˜๋Ÿผ ์ˆœ์ฐจ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ํƒ์ƒ‰ํ•œ๋‹ค. ์ˆœ์ฐจ ํƒ์ƒ‰์€ ์ •๋ง ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š”๋ฐ, ๋ฆฌ์ŠคํŠธ์— ํŠน์ • ๊ฐ’์˜ ์›์†Œ๊ฐ€ ์žˆ๋Š”์ง€ ์ฒดํฌํ•  ๋•Œ๋„ ์ˆœ์ฐจ ํƒ์ƒ‰์œผ๋กœ ์›์†Œ๋ฅผ ํ™•์ธํ•˜๊ณ , ๋ฆฌ์ŠคํŠธ ์ž๋ น์—์„œ ํŠน์ •ํ•œ ๊ฐ’์„ ๊ฐ€์ง€๋Š” ์›์†Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ์„ธ๋Š” count() ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•  ๋•Œ๋„ ๋‚ด๋ถ€์—์„œ๋Š” ์ˆœ์ฐจ ํƒ์ƒ‰์ด ์ˆ˜ํ–‰๋œ๋‹ค. #์ˆœ์ฐจํƒ์ƒ‰ def sequential_search(n, target, array): #๊ฐ ์›์†Œ๋ฅผ ํ•˜๋‚˜์”ฉ ํ™•์ธํ•˜๋ฉฐ for i in range(n): if array[i] == target: return i+1 #ํ˜„์žฌ ์œ„์น˜ ๋ฐ˜ํ™˜(์ธ๋ฑ์Šค๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋ฏ€๋กœ 1 ๋”ํ•˜๊ธฐ) .. 2023. 11. 14.
[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์ •๋ ฌ (์„ ํƒ, ์‚ฝ์ž…, ํ€ต์ •๋ ฌ..) ์ •๋ ฌ(sorting)์ด๋ž€ ๋ฐ์ดํ„ฐ๋ฅผ ํŠน์ •ํ•œ ๊ธฐ์ค€์— ๋”ฐ๋ผ์„œ ์ˆœ์„œ๋Œ€๋กœ ๋‚˜์—ดํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.(ex. ์˜ค๋ฆ„์ฐจ์ˆœ, ๋‚ด๋ฆผ์ฐจ์ˆœ) ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•˜๋ฉด ๋‹ค์Œ์žฅ์—์„œ ๋ฐฐ์šธ ์ด์ง„ํƒ์ƒ‰(binary search)๊ฐ€ ๊ฐ€๋Šฅํ•ด์ง„๋‹ค. ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ด์ง„ํƒ์ƒ‰์˜ ์ „์ฒ˜๋ฆฌ ๊ณผ์ •์ด๋ผ๊ณ ๋„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ฝ”๋”ฉํ…Œ์ŠคํŠธ๋ฅผ ๋Œ€๋น„ํ•˜๊ธฐ ์œ„ํ•ด์„  ํฌ๊ฒŒ 5๊ฐ€์ง€ ์ •๋ ฌ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ๊ณ  ์žˆ์œผ๋ฉด ์ข‹๋‹ค! ์„ ํƒ์ •๋ ฌ / ์‚ฝ์ž…์ •๋ ฌ / ํ€ต์ •๋ ฌ / ๊ณ„์ˆ˜์ •๋ ฌ / ํŒŒ์ด์ฌ ๊ธฐ๋ณธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ •๋ ฌ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ „๊ณต ์‹œ๊ฐ„๋•Œ ๋ฐฐ์šด๋ฐ” ์žˆ๋Š”๋ฐ, ๊ทธ๋•Œ๋Š” c++ ์œ„์ฃผ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์˜์‚ฌ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ๊ณต๋ถ€๋ฅผ ํ–ˆ์—ˆ๋‹ค.(์ค‘๊ฐ„๊ณ ์‚ฌ ๋Œ€๋น„๋ฅผ ์œ„ํ•ด pseudocode ์ „์ฒด๋ฅผ ์™ธ์› ๋˜ ์•…๋ชฝ์ด...) ๊ทธ ๊ธฐ์–ต์„ ๋– ์˜ฌ๋ ค๋ณด๋ฉด์„œ python์—์„œ์˜ ์ฝ”๋“œ ๊ตฌํ˜„์—๋Š” ์–ด๋–ค ์ด์ ์ด ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด๊ณ  ์‹ถ์€ .. 2023. 11. 13.
[์•Œ๊ณ ๋ฆฌ์ฆ˜] BFS/DFS (feat. stack, queue) ๊ผญ ํ•„์š”ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ ๊ธฐ์ดˆ BFS/DFS๋ฅผ ๋“ค์–ด๊ฐ€๊ธฐ์— ์•ž์„œ, ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œํ˜„ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌ์กฐ์— ๋Œ€ํ•ด์„œ ๊ฐ„๋‹จํžˆ ์–˜๊ธฐํ•ด๋ณด๊ณ  ๋„˜์–ด๊ฐ€์ž. Stack ๋ฐ•์Šค ์Œ“๊ธฐ์— ๋น„์œ ํ•  ์ˆ˜ ์žˆ๋‹ค ์„ ์ž…ํ›„์ถœ, ํ›„์ž…์„ ์ถœ ํŒŒ์ด์ฌ์—์„œ ์Šคํƒ์„ ์ด์šฉํ•  ๋•Œ์—๋Š” ๋ณ„๋„์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. ๊ธฐ๋ณธ ๋ฆฌ์ŠคํŠธ์—์„œ append()์™€ pop() ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•˜๋ฉด ์Šคํƒ ์ž๋ฃŒ๊ตฌ์กฐ์™€ ๋™์ผํ•˜๊ธฐ ๋™์ž‘ํ•œ๋‹ค. Queue ๋Œ€๊ธฐ์ค„์— ๋น„์œ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์„ ์ž…์„ ์ถœ ๊ตฌ์กฐ ํŒŒ์ด์ฌ์œผ๋กœ ํ๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ๋Š” collections ๋ชจ๋“ˆ์—์„œ ์ œ๊ณตํ•˜๋Š” deque ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ํ™œ์šฉํ•˜์ž. deque๋Š” ์Šคํƒ๊ณผ ํ์˜ ์žฅ์ ์„ ๋ชจ๋‘ ์ฑ„ํƒํ•œ ๊ฒƒ์ธ๋ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๊ณ  ๋นผ๋Š” ์†๋„๊ฐ€ ๋ฆฌ์ŠคํŠธ ์ž๋ฃŒํ˜•์— ๋น„ํ•ด ํšจ์œจ์ ์ด๋ฉฐ queue ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ๊ฐ„๋‹จํ•˜๋‹ค. ํ์™€ ๊ฐ™์€ ๊ฒฝ์šฐ push_bac.. 2023. 10. 11.