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

๋ชฉ๋ก์ „์ฒด ๊ธ€ (235)

JiYoung Dev ๐Ÿ–ฅ

[ํŒŒ์ด์ฌ] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํŒจ๋Ÿฌ๋‹ค์ž„ : Dynamic Programming ์—ฐ์Šต๋ฌธ์ œ

2023.02.28 ์ฝ”๋“œ์ž‡ ํ•™์Šต๋‚ด์šฉ ๐Ÿ”Ž Dynamic Programming ์—ฐ์Šต๋ฌธ์ œ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ƒˆ๊ผผ๋‹ฌ๊ผผ์œผ๋กœ ๋ฒŒ์–ด๋“ค์ผ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์ˆ˜์ต ๊ตฌํ•˜๊ธฐ price_list : ๊ฐœ์ˆ˜๋ณ„ ๊ฐ€๊ฒฉ์ด ์ •๋ฆฌ๋˜์–ด ์žˆ๋Š” ๋ฆฌ์ŠคํŠธ count : ํŒ๋งคํ•  ์ƒˆ๊ผผ๋‹ฌ๊ผผ ๊ฐœ์ˆ˜ cache : ๊ฐœ์ˆ˜๋ณ„ ์ตœ๋Œ€ ์ˆ˜์ต์ด ์ €์žฅ๋˜์–ด ์žˆ๋Š” ์‚ฌ์ „ ๐Ÿ“– memoization์œผ๋กœ ๋ฌธ์ œ ํ’€๊ธฐ โ‘  base case : 0๊ฐœ ํŒ”์•˜์„ ๋•Œ ํ˜น์€ 1๊ฐœ ํŒ”์•˜์„ ๋•Œ์—๋Š” price_list์˜ ๊ฐ€๊ฒฉ ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅ โ‘ก recursive case : ์ตœ๋Œ€ ์ˆ˜์ต ๊ตฌํ•˜๊ธฐ 1๊ฐœ ํŒ”์•˜์„ ๋•Œ ์ˆ˜์ต : 100 2๊ฐœ ํŒ”์•˜์„ ๋•Œ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋Š” ์ˆ˜์ต : (1๊ฐœ, 1๊ฐœ) ํŒ”์•˜์„ ๋•Œ ํ˜น์€ (2๊ฐœ, 0๊ฐœ) ํŒ”์•˜์„ ๋•Œ 3๊ฐœ ํŒ”์•˜์„ ๋•Œ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋Š” ์ˆ˜์ต : (1๊ฐœ, 2๊ฐœ) ํŒ”์•˜์„ ๋•Œ ํ˜น์€ (3๊ฐœ, 0๊ฐœ) ํŒ”์•˜..

python 2023. 2. 28. 15:44
[ํŒŒ์ด์ฌ] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํŒจ๋Ÿฌ๋‹ค์ž„ : Dynamic Programming

2023.02.27 ์ฝ”๋“œ์ž‡ ํ•™์Šต๋‚ด์šฉ ๐Ÿ”Ž Dynamic Programming ๋ณต์žกํ•œ ๋ฌธ์ œ๋ฅผ ๋” ์ž‘๊ณ  ๊ฐ„๋‹จํ•œ ํ•˜์œ„ ๋ฌธ์ œ๋กœ ๋ถ„ํ•ดํ•˜์—ฌ ๊ฐ๊ฐ์˜ ํ•˜์œ„ ๋ฌธ์ œ๋ฅผ ํ•œ ๋ฒˆ๋งŒ ํ’€๊ณ , ๊ฐ ํ•˜์œ„ ๋ฌธ์ œ์˜ ํ•ด๊ฒฐ์ฑ…์„ ํ‘œ์— ์ €์žฅํ•œ ํ›„ ํ•„์š”์— ๋”ฐ๋ผ ์žฌ์‚ฌ์šฉํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํŒจ๋Ÿฌ๋‹ค์ž„. Dynamic Programming์˜ ์กฐ๊ฑด 1. ์ตœ์  ๋ถ€๋ถ„ ๊ตฌ์กฐ (Optimal Substructure) ์ตœ์  ๋ถ€๋ถ„ ๊ตฌ์กฐ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ๋ถ€๋ถ„ ๋ฌธ์ œ๋“ค์˜ ์ตœ์ ์˜ ๋‹ต์„ ์ด์šฉํ•˜์—ฌ ๊ธฐ์กด ๋ฌธ์ œ์˜ ์ตœ์ ์˜ ๋‹ต์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•จ. ์ฆ‰, ๊ธฐ์กด ๋ฌธ์ œ๋ฅผ ๋ถ€๋ถ„ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆ„์–ด ํ’€ ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ. (ex. ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด) 2. ์ค‘๋ณต๋˜๋Š” ๋ถ€๋ถ„ ๋ฌธ์ œ (Overlapping Subproblems) ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด๊ณผ ๊ฐ™์ด ์ตœ์  ๋ถ€๋ถ„ ๊ตฌ์กฐ๊ฐ€ ์žˆ๋Š” ๋ฌธ์ œ๋ฅผ ํ’€ ๋•Œ์—๋Š” ์ค‘๋ณต ๋˜๋Š” ๋ถ€๋ถ„ ๋ฌธ์ œ๋“ค..

python 2023. 2. 27. 20:02
[ํŒŒ์ด์ฌ] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํŒจ๋Ÿฌ๋‹ค์ž„ : Divide and Conquer (ํ•ฉ๋ณ‘ ์ •๋ ฌ, ํ€ต ์ •๋ ฌ)

2023.02.25 ~ 2023.02.26 ์ฝ”๋“œ์ž‡ ํ•™์Šต๋‚ด์šฉ ๐Ÿ”Ž Divide and Conquer ๋ถ„ํ•  ์ •๋ณต ๋ถ„ํ•  ์ •๋ณต ์•Œ๊ณ ๋ฆฌ์ฆ˜(Divide and Conquer algorithm)์€ ๊ทธ๋Œ€๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†๋Š” ๋ฌธ์ œ๋ฅผ ์ž‘์€ ๋ฌธ์ œ๋กœ ๋ถ„ํ• ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜. ํ€ต ์ •๋ ฌ์ด๋‚˜ ํ•ฉ๋ณ‘ ์ •๋ ฌ๋กœ ๋Œ€ํ‘œ๋˜๋Š” ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ์™€ ์ด์ง„ ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜, ํ–‰๋ ฌ ๊ณฑ์…ˆ ๋“ฑ์ด ๋ถ„ํ•  ์ •๋ณต ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉ ๋ถ„ํ•  ์ •๋ณต ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋ณดํ†ต ์žฌ๊ท€ ํ•จ์ˆ˜(recursive function)๋ฅผ ํ†ตํ•ด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๊ตฌํ˜„๋จ. ๋”ฐ๋ผ์„œ ๋ถ„ํ•  ์ •๋ณต์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์žฌ๊ท€ ๊ฐœ๋…์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ์šฐ์„ ํ•จ. function F(x) : # base case if F(x)์˜ ๋ฌธ์ œ๊ฐ€ ๊ฐ„๋‹จ: return F(x)์„ ์ง์ ‘ ๊ณ„์‚ฐํ•œ ๊ฐ’ # ์žฌ๊ท€ํ•จ์ˆ˜ x๋ฅผ y1๊ณผ y2๋กœ ๋ถ„ํ•  F..

python 2023. 2. 26. 18:49
[ํŒŒ์ด์ฌ] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํŒจ๋Ÿฌ๋‹ค์ž„ : Brute Force

2023.02.24 ์ฝ”๋“œ์ž‡ ํ•™์Šต๋‚ด์šฉ ๐Ÿ”Ž ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํŒจ๋Ÿฌ๋‹ค์ž„(algorithm paradigm) ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ์—๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฐฉ์‹์ด ์žˆ์Œ. ์—ฌ๋Ÿฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋‹ค ๋ณด๋ฉด ํ•ด๊ฒฐ ๊ณผ์ •์ด ๋น„์Šทํ•œ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š”๋ฐ, ์ด๋Ÿฌํ•œ ๊ฒƒ์„ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํŒจ๋Ÿฌ๋‹ค์ž„์ด๋ผ๊ณ  ํ•จ. ์ฆ‰, ์–ด๋– ํ•œ ๋ฌธ์ œ๋ฅผ ํ’€๊ธฐ ์œ„ํ•œ ์ผ๋ฐ˜์ ์ธ ์ ‘๊ทผ๋ฒ• ํ˜น์€ ๋ฐฉ๋ฒ•๋ก . ๋ช‡ ๊ฐ€์ง€ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํŒจ๋Ÿฌ๋‹ค์ž„์ด ์žˆ์œผ๋ฉฐ, ๊ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋ฌธ์ œ๋ฅผ ํ’€๊ธฐ ์œ„ํ•œ ์ž์‹ ๋งŒ์˜ ๊ธฐ์ˆ ๊ณผ ๋„๊ตฌ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Œ. ๋˜ํ•œ, ํ•˜๋‚˜์˜ ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์–‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํŒจ๋Ÿฌ๋‹ค์ž„์œผ๋กœ ํ•œ ๋ฌธ์ œ์— ์ ‘๊ทผํ•  ์ˆ˜๋„ ์žˆ์Œ. ๊ฐ€์žฅ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํŒจ๋Ÿฌ๋‹ค์ž„ 1. Greedy Algorithms 2. Divide and Conquer 3. Dynamic Programming 4. Backtrack..

python 2023. 2. 24. 20:49
๋งŒ์ผ ๋‚ด๊ฐ€ ์ธ์ƒ์„ ๋‹ค์‹œ ์‚ฐ๋‹ค๋ฉด - ๊น€ํ˜œ๋‚จ

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

books 2023. 2. 23. 20:46