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

๐Ÿงฉ Algorithm/๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ2

๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ (Dynamic Programming) Goal 1. ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ดํ•ดํ•˜๊ธฐ 2. Top-down๊ณผ bottom-up ๋ฐฉ๋ฒ• ์•Œ์•„๋ณด๊ธฐ ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ(Dynamic Programing)์ด๋ž€? ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ž€ ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ ๊ทธ ๋ฌธ์ œ๋ฅผ ๋” ์ž‘์€ ๋‹จ์œ„์˜ ๋ฌธ์ œ๋“ค๋กœ ์ชผ๊ฐœ์„œ ์ž‘์€ ๋ฌธ์ œ๋ถ€ํ„ฐ ํ’€์–ด๋‚˜๊ฐ€๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ๋” ์ž‘์€ ๋‹จ์œ„๋กœ ์ชผ๊ฐœ์ง„ ๋ฌธ์ œ๋ฅผ ํ’€์–ด์„œ ์–ป์€ ๊ฒฐ๊ณผ๋กœ ์›๋ž˜ ๋ฌธ์ œ์˜ ํ•ด๋‹ต์— ์ ์  ๋” ๊ฐ€๊นŒ์›Œ์ง€๋Š” ๋ฐฉ์‹์ด๋‹ค. ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํ—›์ ์€ ๋ฌธ์ œ๋ฅผ ์ž‘์€ ๋‹จ์œ„๋กœ ์ชผ๊ฐค ์ˆ˜ ์žˆ์„ ๋•Œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ€์žฅ ํ”ํ•œ ์˜ˆ์ œ๊ฐ€ ๋ฐ”๋กœ ํ”ผ๋ณด๋‚˜์น˜ ์ˆซ์ž์ด๋‹ค. ํ”ผ๋ณด๋‚˜์น˜ ์ˆซ์ž๋Š” ๊ทธ ์ „์— ์˜ค๋Š” ๋‘ ์ˆซ์ž๋ฅผ ๊ณ„์†ํ•ด์„œ ๋”ํ•ด ๋‚˜๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— n๋ฒˆ์งธ ์ˆซ์ž๋ฅผ ์•Œ์•„๋‚ด๊ธฐ ์œ„ํ•ด์„  ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ณ„์† ๋”ํ•ด์˜ค๋ฉด ๋œ๋‹ค. ๋‘ ์ˆซ์ž์”ฉ ๋”ํ•˜๋Š” ์ž‘์€ ๋‹จ.. 2023. 6. 13.
[๋ฐฑ์ค€] 1463๋ฒˆ: 1๋กœ ๋งŒ๋“ค๊ธฐ Hint 1. n์—์„œ 2๋‚˜ 3์„ ๋‚˜๋ˆ„๊ฑฐ๋‚˜ 1์„ ๋บ„ ์ƒ๊ฐํ•˜์ง€ ๋ง๊ณ  1๋ถ€ํ„ฐ ๊ณ ๋ คํ•˜๋Š” ์ฝ”๋“œ๋กœ ์งœ์•ผํ•จ 2. 1๋ถ€ํ„ฐ n๊นŒ์ง€์˜ ์ˆซ์ž๋ฅผ ๊ฐ๊ฐ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„  ๋ช‡๋ฒˆ์˜ ์—ฐ์‚ฐ ํšŸ์ˆ˜๊ฐ€ ํ•„์š”ํ•œ์ง€ ์ƒ๊ฐํ•ด๋ด์•ผ ํ•จ 3. Memoization ๊ธฐ๋ฒ• ํ™œ์šฉ ๋ฐฑ์ค€ 1463๋ฒˆ: 1๋กœ ๋งŒ๋“ค๊ธฐ (ํ’€์–ด๋ณด๊ธฐ) n = int(input()) ans = [0] * (n+1) # ans[i] = i๊ฐ€ 1์ด ๋˜๊ธฐ ์œ„ํ•œ ์—ฐ์‚ฐ ํšŸ์ˆ˜ for i in range(2, n+1): ans[i] = ans[i-1] + 1 # ๋””ํดํŠธ๋กœ๋Š” ๊ทธ ์ „ ์ˆซ์ž์—์„œ +1 ํ•œ๊ฑฐ๋‹ˆ๊นŒ ํšŸ์ˆ˜๋„ ๊ทธ ์ „ ์ˆซ์ž์˜ ํšŸ์ˆ˜์— +1 ํ•œ๊ฒƒ์ž„ if i % 3 == 0: ans[i] = min(ans[i], ans[i // 3] + 1) # ๋””ํดํŠธ์™€ x3 ํ•˜๊ธฐ ์ „์˜ ์ˆซ์ž์˜ ํšŸ์ˆ˜์—์„œ +1 ํ•œ๊ฑฐ ์ค‘์— ๋” ์ž‘์€.. 2023. 2. 17.