์ตœ๋Œ€ 1 ๋ถ„ ์†Œ์š”

๋ฐฑ์ค€ ์‚ฌ์ดํŠธ ๋งํฌ

๋ฌธ์ œ

์ •์ˆ˜ X์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์—ฐ์‚ฐ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ธ ๊ฐ€์ง€ ์ด๋‹ค.

  1. X๊ฐ€ 3์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋ฉด, 3์œผ๋กœ ๋‚˜๋ˆˆ๋‹ค.
  2. X๊ฐ€ 2๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋ฉด, 2๋กœ ๋‚˜๋ˆˆ๋‹ค.
  3. 1์„ ๋บ€๋‹ค. ์ •์ˆ˜ N์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์œ„์™€ ๊ฐ™์€ ์—ฐ์‚ฐ ์„ธ ๊ฐœ๋ฅผ ์ ์ ˆํžˆ ์‚ฌ์šฉํ•ด์„œ 1์„ ๋งŒ๋“ค๋ ค๊ณ  ํ•œ๋‹ค. ์—ฐ์‚ฐ์„ ์‚ฌ์šฉํ•˜๋Š” ํšŸ์ˆ˜์˜ ์ตœ์†Ÿ๊ฐ’์„ ์ถœ๋ ฅํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— 1๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 106๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ •์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค.

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ์—ฐ์‚ฐ์„ ํ•˜๋Š” ํšŸ์ˆ˜์˜ ์ตœ์†Ÿ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

์˜ˆ์ œ ์ž…๋ ฅ 1

2

์˜ˆ์ œ ์ถœ๋ ฅ 1

1

์˜ˆ์ œ ์ž…๋ ฅ 2

10

์˜ˆ์ œ ์ถœ๋ ฅ 2

3

ํžŒํŠธ

10์˜ ๊ฒฝ์šฐ์— 10 โ†’ 9 โ†’ 3 โ†’ 1 ๋กœ 3๋ฒˆ ๋งŒ์— ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.


๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ ๋ง‰ํ˜”๋˜ ๋ถ€๋ถ„

์ ํ™”์‹์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. dp(n) = min (dp(n//3) +1, dp(n//2)+1 , dp(n-1)+1)

์ฝ”๋“œ

ver(1) - dp์‚ฌ์šฉ
n = int(input())
dp = [0] * 10000001
for i in range(2,n+1):
  dp[i] = dp[i - 1] + 1
  if i % 2 == 0:
    dp[i] = min(dp[i], dp[i//2] + 1)

  if i % 3 == 0:
    dp[i] = min(dp[i], dp[i//3] + 1)
print(dp[n])

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ