https://www.acmicpc.net/problem/9095
9095๋ฒ: 1, 2, 3 ๋ํ๊ธฐ
๊ฐ ํ ์คํธ ์ผ์ด์ค๋ง๋ค, n์ 1, 2, 3์ ํฉ์ผ๋ก ๋ํ๋ด๋ ๋ฐฉ๋ฒ์ ์๋ฅผ ์ถ๋ ฅํ๋ค.
www.acmicpc.net
์ ๋ฌธ์ ๋ ์ซ์ 1,2,3์ผ๋ก ํน์ ์ซ์๋ฅผ ๋ง๋ค ์ ์๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ์ด๋ค.
์๋ฅผ๋ค์ด 4๋ผ๋ฉด
- 1+1+1+1
- 1+1+2
- 1+2+1
- 2+1+1
- 2+2
- 1+3
- 3+1
์ด 7๊ฐ๊ฐ ๋๋ค.
์ด ๋ฌธ์ ๋ ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ์ผ๋ก ๋ถ๋ฅ๊ฐ ๋๋ค.
1,2,3์ผ๋ก ๋ง๋ค์ด์ผ ํ๋ ์ซ์๊ฐ n์ด๋ผ ํด๋ณด์.
n = 1 ์ผ๋๋ 1
n = 2 ์ผ๋๋ 2
n = 3 ์ผ๋๋ 4
n = 4 ์ผ๋๋ 7
n = 4์ธ ๊ฒฝ์ฐ๋ n์ด 1์ผ ๋์ 2์ผ ๋์ 3์ผ๋๋ฅผ ๋ํ ๊ฒฝ์ฐ์ ๊ฐ๋ค.
๋ฐ๋ผ์ ์๋์ ๊ฐ์ ์ ํ์์ ์ ๋ํ ์ ์๊ณ ์ฝ๋๋ ๋งค์ฐ ๊ฐ๊ฒฐํด์ง๋ฉฐ ์ฝ๋ค!
d[n] = d[n-1] + d[n-2] + d[n-3] (n์ 4์ด์ 11 ๋ฏธ๋ง์ธ ์)
ํ์ง๋ง ๋๋ ์ด๋ฐ๊ตฌ๋ก ํ์ง ์์๋ค. ๋น์ฐํ ์์ ๋ฐฉ์๋ ์๊ฐํ์ง๋ง ๊ณ ์ ์ ๋ฐฉ๋ฒ์ผ๋ก ํ๊ธฐ ์ซ์๋ฌ๊น.. ์ ๋ฐฉ๋ฒ์ด ์๋๊ณ ์๋ dp๋ก ํ ๋ฐฉ๋ฒ์ด ์๊ฐ๋์ง ์์๋ค. ๊ทธ๋์ ๋ฐฑํธ๋ํน์ผ๋ก ํ์๋ค. ์๋ํ๋ฉด ํ์์ ํ๋๋ฐ ํน์ ์กฐ๊ฑด์ด ์๊ธฐ ๋๋ฌธ์ด๋ค.
def backTracking(_sum,n):
global case
if _sum == n:
case+=1
return
elif _sum > n:
return
else:
for i in range(1,4):
backTracking(_sum+i,n)
t = int(input())
for _ in range(t):
case=0
n = int(input())
backTracking(0,n)
print(case)
๊ณต๋ถ์ ๋์์ ๋ง์ด ๋์๋ค.
๊ธ์ ์ฐ๋ ๋์ค ์๊ฐ๋๊ฑด๋ฐ ๋ด ์ฝ๋๋ ๋จ๋ค์ด ๋ณด๋ฉด ๊ดํ ์ฌ์ด์ฝ๋๋ ์ด๋ ต๊ฒ ๋ณด์ผ๊ฒ๊ฐ๋ค. ์์ง ๊ทธ๋ฐ ๊ฒ์ ์๊ฐํ๊ณ ์ฝ๋ฉ์ ํ์ง๋ ์๋๋ค. ๊ฒฐ๊ณผ๋ฌผ๋ง ์ ๋๋ก ๋์จ๋ค๋ฉด ์ด๋ ํ๋ ์๊ด์๋ค.
ํ๊ต ๊ต์๋๊ป์ ๊ฐ์์๊ฐ์ ์ฝ๋ฉ์ ์ํธ๋ผ๊ณ ํ๋ค. ๋ด๊ฐ ์ด ์ฝ๋๊ฐ ํ๋์ ๊ฒฐ๊ณผ๋ฌผ์ ์ํ ๋ถ์ํ์ผ ๋ฟ์ด๊ณ ์ฝ๋๋ก ์ธํ ์ฌ์ธํ ์ํฅ์ ์๊ฐํ์ง ์์๋ค๋ฉด ๊ทธ๊ฑด ์ํธ๊ฐ ์๋๋ผ ์ธ๊ตฌ๋ ค์ด๋ค. ์ข ๋ ์ฝ๋์ ๋ง์์ ๋ด์๋ณด์.
'์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๊ณ ๋ฆฌ์ฆ[๊ทธ๋ฆฌ๋] 01. ๊ทธ๋ฆฌ๋ ๊ทธ๋ฆฌ๊ณ ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ (0) | 2022.10.20 |
---|---|
๋ฐฑ์ค 2720๋ฒ: ์ธํ์ ์ฌ์ฅ ๋ํ - ํ์ด์ฌ (0) | 2021.10.20 |
[BOJ๋ฐฑ์ค 1003๋ฒ] ํผ๋ณด๋์น ํจ์ with ํ์ด์ฌ (0) | 2021.07.02 |
[CodeUp] 6052 ~ 6056 ๋ฌธ์ ํ์ด with Python (0) | 2021.07.01 |
[BOJ ๋ฐฑ์ค 11051] ์ดํญ๊ณ์ 2 with python (0) | 2021.06.09 |