Algorithm/๊ฐœ๋…์ •๋ฆฌ

๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ (DP) - ์ ‘๊ทผ ๋ฐฉ๋ฒ•

moaoh 2023. 8. 15. 02:37

DP์˜ ๊ธฐ๋ณธ์ ์ธ ๊ฐœ๋…์ •๋ฆฌ๋Š” ์•„๋ž˜์— ์ ์–ด๋‘์—ˆ์Šต๋‹ˆ๋‹ค.

 

๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ (Dynamic Programming)

๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ (Dynamic Programming)๋ž€. ์•ž์ž์— ๊ธ€์ž๋ฅผ ๋”ฐ์„œ dp ๋ผ๊ณ ๋„ ๋ถˆ๋ฆฌ๊ณ  ๋™์  ๊ณ„ํš๋ฒ•์ด๋ผ๊ณ ๋„ ๋ถˆ๋ฆฐ๋‹ค. "ํŠน์ • ๋ฒ”์œ„๊นŒ์ง€์˜ ๊ฐ’์„ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด์„œ ๊ทธ๊ฒƒ๊ณผ ๋‹ค๋ฅธ ๋ฒ”์œ„๊นŒ์ง€์˜ ๊ฐ’์„ ์ด์šฉํ•˜์—ฌ ํšจ์œจ

jun-13.tistory.com

 

 

 

์ ‘๊ทผ๋ฐฉ๋ฒ•

๋‹ค์–‘ํ•œ ์กฐ๊ฑด์„ ๊ฐ€์ง„ dp ๋ฌธ์ œ๋ฅผ ๋งŒ๋‚˜๋‹ค ๋ณด๋‹ˆ dp๋ฌธ์ œ๋ฅผ ๋งŒ๋‚ฌ์„ ๋•Œ ์–ด๋–ป๊ฒŒ ๋Œ€์ฒ˜๋ฅผ ํ•ด์•ผ ํ•˜๋Š”๊ฐ€๋ฅผ ์ •๋ฆฌํ•ด์„œ ์ ์–ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

dp๋ผ๋Š” ๊ฑฐ ์ž์ฒด๊ฐ€ "ํ•˜์œ„๋ฌธ์ œ๋ถ€ํ„ฐ ์ฐจ๋ก€๋กœ ๊ตฌํ•ด๋‚˜๊ฐ€์„œ ์ตœ์ข…์ ์ธ ๋‹ต์„ ๋„์ถœํ•ด ๋‚ด๋Š” ํ˜•ํƒœ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜"์ด๋ผ๋Š” ํ˜•์‹์ด ๊ธฐ๋ณธ ์ „์ œ์กฐ๊ฑด์ด๋‹ค ๋ณด๋‹ˆ

dp๋Š” ํฌ๊ฒŒ 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ’€ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

  1. ๊ณผ๊ฑฐ์˜ ๊ฐ’์œผ๋กœ ํ˜„์žฌ์˜ ๊ฐ’์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ์‹.
  2. ํ˜„์žฌ์˜ ๊ฐ’์œผ๋กœ ๋ฏธ๋ž˜๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ์‹.

์œ„์™€ ๊ฐ™์€ ๋ฐฉ์‹๋“ค์„ ํ’€์–ด์„œ ์ ์–ด๋ณด์ž๋ฉด

 

1.  ๊ณผ๊ฑฐ์˜ ๊ฐ’์œผ๋กœ ํ˜„์žฌ์˜ ๊ฐ’์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ์‹.

"dp[i] = dp[i - 2] + dp[i - 1]" 

i์˜ ๊ฐ’์„ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ด์ „์˜ ๊ฐ’๋“ค์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ์‹. 

๊ณ„์‚ฐ์„ ํ•˜๋Š” ๊ธฐ์ค€์„ ํ˜„์žฌ์˜ ๊ฐ’ ( i ) ๋กœ ์žก๊ณ  ์ด์ „์˜ ๊ฐ’๋“ค์„ ๊ฐ€์ ธ๋‹ค๊ฐ€ ๊ฐ’์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ์‹์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐ์„ ํ•ฉ๋‹ˆ๋‹ค.

 

 

2. ํ˜„์žฌ์˜ ๊ฐ’์œผ๋กœ ๋ฏธ๋ž˜๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ์‹.

"dp[i + 1] = dp[i - 1] + dp[i]"

i + 1์˜ ๊ฐ’์„ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด ํ˜„์žฌ์˜ ๊ฐ’์œผ๋กœ ๋ฏธ๋ž˜์˜ ๊ฐ’์„ ์ง€์ •ํ•ด ์ฃผ๋Š” ๋ฐฉ์‹.

1๋ฒˆ๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ๊ณ„์‚ฐํ•˜๋ ค๋Š” ๊ธฐ์ค€์„ i + 1 ์ฆ‰ ๋ฏธ๋ž˜์˜ ๊ฐ’์œผ๋กœ ์žก๊ณ  ํ˜„์žฌ์˜ ๊ฐ’ ๋“ฑ์„ ๊ฐ€์ ธ๋‹ค๊ฐ€ ๊ฐ’์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ์‹์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

 

 

1๋ฒˆ ์˜ˆ์ œ์™€ 2๋ฒˆ ์˜ˆ์ œ์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด

"dp[i] = dp[i - 2] + dp[i - 1]"๊ณผ "dp[i + 1] = dp[i - 1] + dp[i]" ๋ชจ๋‘ ํ”ผ๋ณด๋‚˜์น˜์˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” dp ์ ํ™”์‹์œผ๋กœ

์ตœ์ข…์ ์œผ๋กœ ํ”ผ๋ณด๋‚˜์น˜์ˆ˜์˜ ์›ํ•˜๋Š” ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์€ 1๋ฒˆ๊ณผ 2๋ฒˆ ๋ชจ๋‘ ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ์ƒ๊ฐ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ƒ๊ฐ์ด ๋“ค์—ˆ๋˜ ๊ฒŒ
"dp๋ฌธ์ œ์— ์ƒ๊ด€์—†์ด 1๋ฒˆ๊ณผ 2๋ฒˆ ๋ชจ๋‘ ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•์— ์ฐจ์ด์ด๊ณ  ๋ญ๊ฐ€ ๋งž๋‹ค, ๋ญ๊ฐ€ ํ‹€๋ฆฌ๋‹ค, ๊ฒฐ๋ก ์ ์ธ ์ฐจ์ด์—์„œ๋Š” ์ƒ๊ด€์ด ์—†๋Š” ๊ฑด๊ฐ€?"

๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์–ด ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ• ๋ชจ๋‘๋กœ 

 

2579๋ฒˆ: ๊ณ„๋‹จ ์˜ค๋ฅด๊ธฐ

๊ณ„๋‹จ ์˜ค๋ฅด๊ธฐ ๊ฒŒ์ž„์€ ๊ณ„๋‹จ ์•„๋ž˜ ์‹œ์ž‘์ ๋ถ€ํ„ฐ ๊ณ„๋‹จ ๊ผญ๋Œ€๊ธฐ์— ์œ„์น˜ํ•œ ๋„์ฐฉ์ ๊นŒ์ง€ ๊ฐ€๋Š” ๊ฒŒ์ž„์ด๋‹ค. <๊ทธ๋ฆผ 1>๊ณผ ๊ฐ™์ด ๊ฐ๊ฐ์˜ ๊ณ„๋‹จ์—๋Š” ์ผ์ •ํ•œ ์ ์ˆ˜๊ฐ€ ์“ฐ์—ฌ ์žˆ๋Š”๋ฐ ๊ณ„๋‹จ์„ ๋ฐŸ์œผ๋ฉด ๊ทธ ๊ณ„๋‹จ์— ์“ฐ์—ฌ ์žˆ๋Š” ์ 

www.acmicpc.net

์œ„์˜ ๋ฌธ์ œ ํ’€์ด๋ฅผ ์ง„ํ–‰ํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋‘๊ฐ€์ง€ ๋ชจ๋‘๋กœ ํ’€์ด๋ฅผ ์ง„ํ–‰ํ•˜๋‹ค ๋ณด๋‹ˆ 

 

[๋ฐฑ์ค€] 2579๋ฒˆ - ๊ณ„๋‹จ ์˜ค๋ฅด๊ธฐ (C++)

2579๋ฒˆ: ๊ณ„๋‹จ ์˜ค๋ฅด๊ธฐ ๊ณ„๋‹จ ์˜ค๋ฅด๊ธฐ ๊ฒŒ์ž„์€ ๊ณ„๋‹จ ์•„๋ž˜ ์‹œ์ž‘์ ๋ถ€ํ„ฐ ๊ณ„๋‹จ ๊ผญ๋Œ€๊ธฐ์— ์œ„์น˜ํ•œ ๋„์ฐฉ์ ๊นŒ์ง€ ๊ฐ€๋Š” ๊ฒŒ์ž„์ด๋‹ค. ๊ณผ ๊ฐ™์ด ๊ฐ๊ฐ์˜ ๊ณ„๋‹จ์—๋Š” ์ผ์ •ํ•œ ์ ์ˆ˜๊ฐ€ ์“ฐ์—ฌ ์žˆ๋Š”๋ฐ ๊ณ„๋‹จ์„ ๋ฐŸ์œผ๋ฉด ๊ทธ ๊ณ„๋‹จ์—

jun-13.tistory.com

 

 

๊ฒฐ๋ก 

์œ„์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ ํ•ต์‹ฌ๋งŒ ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด์ž๋ฉด

"๊ทธ๋ƒฅ ์ œ์•ฝ์กฐ๊ฑด์ด ์—†๋Š” dp๋ฌธ์ œ๊ฐ€ ์•„๋‹Œ ์‚ฌ์ „์— dp์— ๋Œ€ํ•œ ์ œ์•ฝ์กฐ๊ฑด์ด ๊ฑธ๋ ค์žˆ๋‹ค๋ฉด 1๋ฒˆ์˜ ๋ฐฉ๋ฒ•(๊ณผ๊ฑฐ์˜ ๊ฐ’์œผ๋กœ ํ˜„์žฌ์˜ ๊ฐ’์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ์‹.)

์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค."๋ผ๋Š” ๊ฒฐ๋ก ์„ ๊ฐ€์ง€๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์™œ๋ƒํ•˜๋ฉด ํ˜„์žฌ์˜ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ๋ฏธ๋ž˜์˜ ๊ฐ’์„ ์ •์˜ํ•˜๋Š” ๊ฒƒ์€ ๋ฏธ๋ž˜์˜ ๊ฐ’์ด ์–ด๋–ป๊ฒŒ ๋˜๊ณ  ์ œํ•œ์กฐ๊ฑด์ด ๋ฏธ๋ž˜์—๋Š” ์–ด๋–ป๊ฒŒ ์ž‘์šฉ์ด ๋  ๊ฒƒ์ธ์ง€
๋ฏธ๋ฆฌ ์ƒ๊ฐ์„ ํ•˜๊ณ  ์ ‘๊ทผ์„ ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ํ•„์ˆ˜์ ์œผ๋กœ ํ•„์š”ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ๊ทธ ๊ณผ์ •์—์„œ ์ถ”๊ฐ€์ ์œผ๋กœ ๊ณ„์‚ฐํ•ด์ค˜์•ผ ํ•˜๋Š” ์‹์ด ๋ถ™๊ฒŒ ๋˜๊ณ  ์ฝ”๋“œ์˜ ๋ณต์žก๋„๊ฐ€ ์˜ฌ๋ผ๊ฐ€๊ฒŒ ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๊ทธ ๋ฐฉ๋ฒ•๊ณผ ๋‹ค๋ฅด๊ฒŒ ๊ณผ๊ฑฐ์˜ ๊ฐ’์œผ๋กœ ํ˜„์žฌ์˜ ๊ฐ’์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ์‹์€ ์ด๋ฏธ ์ง€๋‚˜์˜จ ๊ณผ์ •์„ ๋ฐ”ํƒ•์œผ๋กœ ํ˜„์žฌ์˜ ๊ฐ’์„ ์ƒ๊ฐํ•˜๋Š” ๊ณผ์ •์ด๊ธฐ ๋•Œ๋ฌธ์— ์ง€๊ธˆ์„ ๋ฐ”ํƒ•์œผ๋กœ ์ƒ๊ฐํ•˜๋Š” ๋ฐฉ์‹์ด๋ผ 2๋ฒˆ ๋ฐฉ๋ฒ•์— ๋น„ํ•ด ํ›จ์”ฌ ๋œ ๋ณต์žกํ•˜๊ณ  ์ง๊ด€์ ์œผ๋กœ ๋ฌธ์ œ์˜ ์ ‘๊ทผ์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋Š” ๊ฑฐ ๊ฐ™์Šต๋‹ˆ๋‹ค.