์ƒˆ์†Œ์‹

๐Ÿงฎ ์•Œ๊ณ ๋ฆฌ์ฆ˜/-- ๋ฐฑ์ค€ (BOJ) - Python

๋ฐฑ์ค€ (boj) ํŒŒ์ด์ฌ - 1463 : 1๋กœ ๋งŒ๋“ค๊ธฐ (DP)

  • -

๋ฌธ์ œ ๋งํฌ : https://www.acmicpc.net/problem/1463

 

1463๋ฒˆ: 1๋กœ ๋งŒ๋“ค๊ธฐ

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

www.acmicpc.net

 

 


๋ฌธ์ œ ๋ถ„๋ฅ˜ : ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ

https://infinitt.tistory.com/246

 

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

๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ (Dynamic Programming) : DP ๊ฐœ๋… : ๋ฌธ์ œ๋ฅผ ๋” ์ž‘์€ ๋‹จ์œ„๋กœ ์ชผ๊ฐœ์–ด ํ•ด๊ฒฐํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜. (๋ถ„ํ•  ์ •๋ณต ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๋น„์Šทํ•˜๋‹ค. ์ฐจ์ด์ ์€ ๋ฐ”๋กœ ์•„๋žซ์ค„.) ํ•ต์‹ฌ์€, ๊ทธ ์ž‘์€ ๋‹จ์œ„์˜ ๋ฌธ์ œ๋“ค์ด ๋ฐ˜๋ณตํ•ด์„œ..

infinitt.tistory.com

 

์ฒ˜์Œ์—” ๋‹น์—ฐ์Šค๋Ÿฝ๊ฒŒ ์กฐ๊ฑด๋ฌธ์„ ํ†ตํ•ด ๊ตฌํ˜„ํ–ˆ๋‹ค. (n//3 , n//2 , n-=1 ์ˆœ์„œ๋Œ€๋กœ).

ํ•˜์ง€๋งŒ ๋ฌธ์ œ์˜ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค์ธ 10์ด ๋ฐ˜๋ก€์˜€๋‹ค.

์ฆ‰, ๋‹จ์ˆœํžˆ ์กฐ๊ฑด๋ฌธ์œผ๋กœ ํ’€๊ฒŒ๋˜๋ฉด 10 - > 5 -> 4 -> 2 -> 1 ์ด์ง€๋งŒ, ์‚ฌ์‹ค 10์€

10 -> 9 -> 3 - > 1 ์œผ๋กœ, n/3๋ณด๋‹ค n-1์„ ๋จผ์ € ํ•ด์ค˜์•ผ ์ตœ์†Œ๊ฐ’์ด ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค.

 

๋”ฐ๋ผ์„œ ์ด ๋ฌธ์ œ๋Š” ๋‹จ์ˆœ ๊ตฌํ˜„์ด ์•„๋‹ˆ๋ผ, ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ์œผ๋กœ ํ’€์–ด์•ผ ํ•œ๋‹ค.

 

 

  • N์ด๋ผ๋Š” ์ˆ˜๋Š” N//3์„ ์—ฐ์‚ฐ์ „์œผ๋กœ ๋Œ๋ฆฌ๋ฉด, ์ฆ‰ +1์„ ํ•˜๋ฉด ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
  • N์ด๋ผ๋Š” ์ˆ˜๋Š” N//2์„ ์—ฐ์‚ฐ์ „์œผ๋กœ ๋Œ๋ฆฌ๋ฉด, ์ฆ‰ +1์„ ํ•˜๋ฉด ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
  • N์ด๋ผ๋Š” ์ˆ˜๋Š” N-1์„ ์—ฐ์‚ฐ์ „์œผ๋กœ ๋Œ๋ฆฌ๋ฉด, ์ฆ‰ +1์„ ํ•˜๋ฉด ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

๋”ฐ๋ผ์„œ !!! ์ ํ™”์‹ : dp(N) = min ( dp(N//3) +1, dp(N//2)+1 , dp(N-1)+1 )

 

 

*์ •๋‹ต ์ฝ”๋“œ (Python)
n = int(input())

dp = [0 for _ in range(n+1)]

for i in range(2, n+1):
    dp[i] = dp[i-1] + 1  

    if i%2 == 0 and dp[i] > dp[i//2] + 1 :
        dp[i] = dp[i//2]+1
        
    if i%3 == 0 and dp[i] > dp[i//3] + 1 :
        dp[i] = dp[i//3] + 1
        
print(dp[n])

 

  • n+1๊ฐœ๋งŒํผ์˜ 0์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด์ค€๋‹ค.
  • dp๋ผ๋Š” ๋ฐฐ์—ด์˜ index๋Š” ๋ฌธ์ œ์˜ ์ž…๋ ฅn๊ณผ ๋Œ€์‘ํ•˜๊ณ , index์˜ ๊ฐ’์€ ์—ฐ์‚ฐ์ตœ์†Ÿ๊ฐ’(๋ฌธ์ œ์˜ ์ถœ๋ ฅ)์— ๋Œ€์‘ํ•˜๊ฒŒ๋œ๋‹ค.

 

* ์‹œ๊ฐ„๋ณต์žก๋„

๋ฐฐ์—ด์˜ ํฌ๊ธฐ * O(1)์ด๋‹ค. (๋ฐฐ์—ด ํ•˜๋‚˜๋‹น O(1)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๋ฏ€๋กœ)

๋ฐฐ์—ด์€ n+1์ด๋ฏ€๋กœ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(n)

 

Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.