[BOJ] 11057. ์˜ค๋ฅด๋ง‰ ์ˆ˜(๐Ÿฅˆ, DP)

lemythe423ยท2023๋…„ 7์›” 14์ผ
0

BOJ ๋ฌธ์ œํ’€์ด

๋ชฉ๋ก ๋ณด๊ธฐ
3/133
post-thumbnail

๐Ÿ“ ๋ฌธ์ œ

์˜ค๋ฅด๋ง‰ ์ˆ˜๋Š” ์ˆ˜์˜ ์ž๋ฆฌ๊ฐ€ ์˜ค๋ฆ„์ฐจ์ˆœ์„ ์ด๋ฃจ๋Š” ์ˆ˜๋ฅผ ๋งํ•œ๋‹ค. ์ด๋•Œ, ์ธ์ ‘ํ•œ ์ˆ˜๊ฐ€ ๊ฐ™์•„๋„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์นœ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, 2234์™€ 3678, 11119๋Š” ์˜ค๋ฅด๋ง‰ ์ˆ˜์ด์ง€๋งŒ, 2232, 3676, 91111์€ ์˜ค๋ฅด๋ง‰ ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋‹ค.

์ˆ˜์˜ ๊ธธ์ด N์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์˜ค๋ฅด๋ง‰ ์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ์ˆ˜๋Š” 0์œผ๋กœ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ’€์ด

๋์ด 0์œผ๋กœ ๋๋‚˜๋ฉด ๋’ค์— 0~9๊นŒ์ง€ 10๊ฐœ์˜ ์ˆซ์ž๊ฐ€ ์˜ฌ ์ˆ˜ ์žˆ๋‹ค. ๊ธธ์ด๊ฐ€ 10์ธ 1์ฐจ์› ๋ฐฐ์—ด์˜ ๊ฐ ์ธ๋ฑ์Šค๊ฐ€ ๋๋‚˜๋Š” ์ˆซ์ž๋ผ๊ณ  ํ•  ๋•Œ, ์ธ๋ฑ์Šค 0์— ์žˆ๋Š” ๊ฐ’๋“ค์€ 1~9๊นŒ์ง€์˜ ์ธ๋ฑ์Šค ๊ฐ’์— ๋ชจ๋‘ ๋”ํ•ด์ ธ์•ผ ํ•œ๋‹ค.

2์ฐจ์›์œผ๋กœ ํ’€ ์ˆ˜๋„ ์žˆ๊ณ , 1์ฐจ์›์œผ๋กœ ๋ˆ„์ ํ•ด์„œ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ• ์กด์žฌ

โฐ 48ms ์ฝ”๋“œ

๊ฐ 10๊ฐœ์˜ ์—ด์„ ๊ฐ–๋Š” n๊ฐœ ํ–‰์˜ 2์ฐจ์› ๋ฐฐ์—ด

# ์˜ค๋ฅด๋ง‰ ์ˆ˜

n = int(input())
dp = [[None] for _ in range(n)]
dp[0] = [1]*10

for i in range(1, n):
    dp[i] = [sum(dp[i-1][x:]) for x in range(10)]

print(sum(dp[-1])%10007)

โญ•๏ธ 36ms ์ฝ”๋“œ

๊ฐ’๋“ค์„ ๋ˆ„์ ํ•ด์„œ ๋”ํ•ด๋‚˜๊ฐ€๋Š” 1์ฐจ์› ๋ฐฐ์—ด

n = int(input())

dp =[1] * 10

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

print(dp[9]%10007) 
profile
์•„๋ฌด๋ง์ด๋‚˜ํ•˜๊ธฐ

0๊ฐœ์˜ ๋Œ“๊ธ€