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

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

๐˜š๐˜ญ๐˜ฐ๐˜ธ ๐˜ฃ๐˜ถ๐˜ต ๐˜ด๐˜ต๐˜ฆ๐˜ข๐˜ฅ๐˜บ

[๋ฐฑ์ค€] 1463๋ฒˆ: 1๋กœ ๋งŒ๋“ค๊ธฐ - C++

๋ฌธ์ œ ์ •์ˆ˜ X์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์—ฐ์‚ฐ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ธ ๊ฐ€์ง€ ์ด๋‹ค. X๊ฐ€ 3์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋ฉด, 3์œผ๋กœ ๋‚˜๋ˆˆ๋‹ค. X๊ฐ€ 2๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋ฉด, 2๋กœ ๋‚˜๋ˆˆ๋‹ค. 1์„ ๋บ€๋‹ค. ์ •์ˆ˜ N์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์œ„์™€ ๊ฐ™์€ ์—ฐ์‚ฐ ์„ธ ๊ฐœ๋ฅผ ์ ์ ˆํžˆ ์‚ฌ์šฉํ•ด์„œ 1์„ ๋งŒ๋“ค๋ ค๊ณ  ํ•œ๋‹ค. ์—ฐ์‚ฐ์„ ์‚ฌ์šฉํ•˜๋Š” ํšŸ์ˆ˜์˜ ์ตœ์†Ÿ๊ฐ’์„ ์ถœ๋ ฅํ•˜์‹œ์˜ค. ์ž…๋ ฅ ์ฒซ์งธ ์ค„์— 1๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 106๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ •์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค. ์ถœ๋ ฅ ์ฒซ์งธ ์ค„์— ์—ฐ์‚ฐ์„ ํ•˜๋Š” ํšŸ์ˆ˜์˜ ์ตœ์†Ÿ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค. DP๋ฅผ ์ด์šฉํ•˜์—ฌ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ. 1. N์ด 3์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋ฉด, 3์œผ๋กœ ๋‚˜๋ˆˆ๋‹ค โžก๏ธ D[N] = D[N/3] + 1 2. N์ด 2๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋ฉด, 2๋กœ ๋‚˜๋ˆˆ๋‹ค โžก๏ธ D[N] = D[N/2] + 1 3. 1์„ ๋บ€๋‹ค โžก๏ธ D[N] = D[N - 1] + 1 ๊ทธ๋Ÿฌ๋‚˜ ..

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ๋™์ ๊ณ„ํš๋ฒ•(Dynamic Programming)

'์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ์ž๋ฃŒ ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ with C++' ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค. 1. ๋™์  ๊ณ„ํš๋ฒ• ; dynamic programming 1.1 ๊ฐœ๋… ๋ถ„ํ•  ์ •๋ณต ํŒจ๋Ÿฌ๋‹ค์ž„ ๊ฐœ๋…์„ ํ™•์žฅํ•œ ๊ฒƒ์œผ๋กœ, ํฐ ๋ฌธ์ œ๋ฅผ ์ž‘์€ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆ„์–ด ํ‘ธ๋Š” ๋ฌธ์ œ๋ฅผ ์ผ์ปซ๋Š” ๋ง์ด๋‹ค. ์–ธ๋œป ๋ฌธ์ œ๋ฅผ ๋ณด๋ฉด ๋น„์Šทํ•˜๋‹ค ์ƒ๊ฐ๋  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ถ„ํ•  ์ •๋ณต๊ณผ ๊ตฌ๋ถ„๋˜๋Š” ๋™์  ๊ณ„ํš๋ฒ•๋งŒ์˜ ํŠน์„ฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 1. ์ค‘๋ณต๋˜๋Š” ๋ถ€๋ถ„ ๋ฌธ์ œ(overlapping subproblem) 2. ์ตœ์  ๋ถ€๋ถ„ ๊ตฌ์กฐ(optimal substructure) ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์†์„ฑ์„ ๋งŒ์กฑํ•ด์•ผ ๋™์  ๊ณ„ํš๋ฒ•์„ ํ†ตํ•ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. ์ „์ฒด ๋ฌธ์ œ๊ฐ€ ๋…๋ฆฝ์ ์ธ ๋ถ€๋ถ„ ๋ฌธ์ œ๋กœ ๋‚˜๋‰˜๋Š” ๋ถ„ํ•  ์ •๋ณต ๋ฌธ์ œ์™€ ๋‹ฌ๋ฆฌ ๋™์  ๊ณ„ํš๋ฒ•์—์„œ๋Š” ์ค‘๋ณต๋˜๋Š” ๋ถ€๋ถ„ ๋ฌธ์ œ๊ฐ€ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋“ฑ์žฅํ•œ๋‹ค. ๋˜ํ•œ ์ตœ์  ๋ถ€๋ถ„ ๊ตฌ..