๋ฌธ์ : ๋ฐฑ์ค 9095๋ฒ _ 1,2,3 ๋ํ๊ธฐ
https://www.acmicpc.net/problem/9095
๋์ ๋ต
# ๋ฐฑ์ค 9095๋ฒ: 1,2,3 ๋ํ๊ธฐ
# 2020-02-01
case = int(input()) # ์
๋ ฅ๋ฐ๊ธฐ
num = []
def cpt_num(n):
if n>3: # 3๋ณด๋ค ํฌ๋ฉด
return cpt_num(n-3) + cpt_num(n-2) + cpt_num(n-1)
elif n==3: # 3์ด๋ฉด
return 4
elif n==2: # 2์ด๋ฉด
return 2
elif n==1: # 1์ด๋ฉด
return 1
while case :
case-=1
num.append(int(input()))
for n in num:
print(cpt_num(n))
์ด์ ๋ฐฐ์ ๋ ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ์ ํ์ฉํ์ฌ ๊ณ์ฐ์ ํด๋ณด์๋ค. ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๋งค๊ฒจ์ผํ๋๋ฐ ์ถ๋ ฅ์ ๊ฒฝ์ฐ์ ์์ ํด ๋นํ๋ ๊ฐ์ ๋ชจ๋ ์ถ๋ ฅํ๋ผ๋ ๋ง์ ์์ด์ ๊ฒฝ์ฐ์ ์๋ง ๊ตฌํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ๋ณ์๋ฅผ ๋ง์ด ์ธ ํ์๊ฐ ์์๋ค.
ํจ์ cpt_num(n)
์ ์ฃผ์ด์ง n์ ๋ํด์ ๋ช ๊ฐ์ ๊ฒฝ์ฐ์ ์๊ฐ ์กด์ฌํ๋ ์ง ๊ณ์ฐํ๋ ํจ์์ด๋ค. ์ฐ์ ํด๋น ์๊ฐ 3 ์ดํ์ธ ๊ฒฝ์ฐ์ 1,2,3 ์ผ ๋๋ ์ฝ๊ฒ ์ง์ ๊ณ์ฐํด์ 1,2,4๊ฐ์ง์ ๊ฒฝ์ฐ์ ์๊ฐ ๋์จ๋ค๋ ๊ฒ์ ์ ์ ์๋ค. ๋ฐ๋ผ์ ์ฃผ์ด์ง ์๊ฐ 3์ดํ์ธ ๊ฒฝ์ฐ๋ฅผ ๋๋๊ณ 3์ด์์ธ ๊ฒฝ์ฐ์๋ 1,2,3์ ๋บ ๋ค์์ ์ฌ๊ท์ ์ผ๋ก ๋ค์ ํจ์์ ๋ฃ๋๋ค.
ex_) 7์ ํจ์์ ๋ฃ์ผ๋ฉด 3๋ณด๋ค ํฌ๋ฏ๋ก f(4)+f(5)+f(6) ์ด return ๊ฐ์ด๋ค. ์ด์ ๋ฐ๋ผ ์ฌ๊ท์ ์ผ๋ก f(4)๋ f(1)+f(2)+f(3) ์ด๋ฐ ์์ผ๋ก ๋ค์ ๊ณ์ฐ๋๋ค. ํ์ด์ฐ๋ฉด f(4)+f(5)+f(6)={f(1)+f(2)+f(3)}+{f(2)+f(3)+f(4)}+{f(3)+f(4)+f(5)}
์ด๋ค. ์ฌ๊ธฐ์ f(1),f(2),f(3)์ ๋ชจ๋ ์์๋ก return ๋๋ฏ๋ก f(4),f(5)๋ฅผ ์ฌ๊ท์ ์ผ๋ก ๋ค์ ๊ณ์ฐํ๋ฉด ๋๋ค.
์ด ํ์ด๋ฒ์ 11์ด๋ผ๋ ์์ ์ ๋ ฅ ๋ฒ์ ๋๋ถ์ ๊ฐ๋ฅํ ๋ฐฉ๋ฒ์ด๋ค. ์ฌ๊ท๋ฅผ ๋์์ ๊ณ์ฐํ๋ ๊ฒฐ๊ณผ๊ฐ์ด ๋ฐ๋ก ์ ์ฅ๋์ด์์ง ์์์ผ๋ก ํญ์ ๋ค์ ๊ณ์ฐํด์ผํ๋ค. ๋ฐ๋ผ์ 11๋ฒ๋ง ๋์๋ 3^11์ ์ฌ๊ท๋ฅผ ๋๊ฒ ๋๋ค. 3^11์ ์๊ฐ์ด๊ณผ๊ฐ ์ผ์ด๋์ง ์๋ ์ ๋์ฌ์ ๊ด์ฐฎ์ง๋ง ์ ๋ ฅ์ ๋ฒ์๊ฐ ์ปค์ง๋ฉด ๋ถ๊ฐ๋ฅํ๋ค. :)
๋ค๋ฅธ ๋ต
์ด ๋ธ๋ก๊ทธ์์๋ ๋ณธ์ธ๊ณผ ๊ฐ์ด ๋ฆฌ์คํธ์ ๊ณ์ฐํ ์๋ค์ ๋ฃ๊ณ ์์ 3์์ ๊ณ์ฐ๊ฐ์ ๋ํ๋ฉด ์ด๋ฒ index์ ๊ฒฐ๊ณผ๊ฐ์ด ๋๋ค๋ ๊ท์น์ ๋ฐ๊ฒฌํด์ ํ์๋ค. ํ์ง๋ง ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฒฐ๊ณผ๊ฐ๋ค์ ์ ์ฅํด๋๊ณ ๋ค์ ์ด์ฉํ์๋ค.
๋ฐฐ์ด ๊ฒ
- ์ ํด์ง ์์ ๋์ด์ ๋ฆฌ์คํธ์ ๋ด์์ ์ฌ์ฉํ๋ ๊ฒ์ด ํจ๊ณผ์ ์ด๋ค.
- ๋์ ํ๋ก๊ทธ๋๋ฐ์ ๊ฒฝ์ฐ์๋ ๋ฌธ์ ์ ๊ธฐ์ค์ ๋ง๋๋ค๋ฉด ์ฌ์ฌ์ฉ์ฑ์ ๊ณ ๋ คํ ์ ์๋ค๋ฉด ์ข๋ค.
'Algorithm ๋ฌธ์ > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[python]๋ฐฑ์ค 1074๋ฒ : Z (0) | 2020.02.21 |
---|---|
[python]๋ฐฑ์ค 1019๋ฒ : ์ฑ ํ์ด์ง (0) | 2020.02.21 |
[python]๋ฐฑ์ค 4811๋ฒ : ์์ฝ (1) | 2020.02.21 |
[python]๋ฐฑ์ค 2839๋ฒ : ์คํ ๋ฐฐ๋ฌ (0) | 2020.02.01 |
[python]๋ฐฑ์ค 1463๋ฒ : 1๋ก ๋ง๋ค๊ธฐ (0) | 2020.02.01 |
Comment