https://www.acmicpc.net/problem/9095
9095๋ฒ: 1, 2, 3 ๋ํ๊ธฐ
๊ฐ ํ ์คํธ ์ผ์ด์ค๋ง๋ค, n์ 1, 2, 3์ ํฉ์ผ๋ก ๋ํ๋ด๋ ๋ฐฉ๋ฒ์ ์๋ฅผ ์ถ๋ ฅํ๋ค.
www.acmicpc.net
| ๋ฌธ์ ๋ด์ฉ
๊ธฐ๋ณธ์ ์ธ ๋์ ํ๋ก๊ทธ๋๋ฐ ๋ฌธ์ . 1,2,3์ ์ฌ์ฉํด์ ์ฃผ์ด์ง ์ซ์๋ฅผ ํํํ ์ ์๋ ๊ฐ์ง ์ ๊ตฌํ๊ธฐ
| ํ์ด
์ซ์๋ฅผ ๋์ดํด๋ณด๋ฉด fn = fn-1 + fn-2 + fn-3 ์ด๋ผ๋ ๊ท์น์ ์ฝ๊ฒ ์ฐพ์ ์ ์๋ค.
์ด๋ฐ ๊ฐ์ด ๋์ค๋ ์ด์ ๋ n์ 1, 2, 3์ผ๋ก ๋ํ๋ผ ์ ์๋ ๊ฐ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ๋ ค๋ฉด 1 + n - 1, 2 + n -2, 3 + n -3 ์ผ๋์ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ๋ฉด ๋๊ธฐ ๋๋ฌธ.
Ex) n = 4 ์ผ ๋, 4 = 1 + 3, 4 = 2 + 2, 4 = 3 + 1 ๋ก ๋ํ๋ผ ์ ์๊ณ ๊ฐ ๊ฒฝ์ฐ์ ์๋ f(3) + f(2) + f(1)์
n = 5 ์ผ ๋, 5 = 1 + 4, 2 + 3, 3 + 2 => f(4) + f(3) + f(2)
1) ์ฌ์ ์ด์ฉ (์ด์ ์ ๊ณ์ฐํ๋ ๊ฐ๋ค์ memo์ ์ ์ฅํด์ ์ฌ์ฉ)
n = int(input()) # ์ซ์ ๊ฐ์
memo = {
1: 1,
2: 2,
3: 4,
}
# fn = fn-1 + fn-2 + fn-3
def get_count(num):
if num in memo:
return memo[num]
else:
memo[num] = get_count(num - 1) + get_count(num - 2) + get_count(num - 3)
return memo[num]
for i in range(n):
print(get_count(int(input())))
2) ์ฌ๊ท๋ก๋ง (n์ด ์ปค์ง๋ฉด ์๊ฐ์ด๊ณผ ์๋ฌ)
n = int(input()) # ์ซ์ ๊ฐ์
# fn = fn-1 + fn-2 + fn-3
def get_count(num):
if num == 1:
return 1
if num == 2:
return 2
if num == 3:
return 4
return get_count(num - 1) + get_count(num - 2) + get_count(num - 3)
for i in range(n):
print(get_count(int(input())))
| ๋๋์
DP ๋ฌธ์ ๋ค ๋๋์ ์ค๋๋ฐ ๊ท์น์ ๋ชจ๋ฅผ ๋ ์ผ๋จ ๊ฐ ๊ฒฝ์ฐ์ ์๋ถํฐ ๋์ดํด ๋ณด๋ ๊ฒ ์ข๋ค. ์ ์ด๋ฐ ๊ท์น์ด ๋์ค๋ ์ง๋ ๋์ค์ ์๊ฐ..!
'์๊ณ ๋ฆฌ์ฆ > ๋ฌธ์ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python] ๋ฐฑ์ค 11286๋ฒ ์ ๋๊ฐ ํ (0) | 2023.04.30 |
---|---|
[Python] ๋ฐฑ์ค 4963๋ฒ ์ฌ์ ๊ฐ์ (0) | 2023.02.18 |
[Python] ๋ฐฑ์ค 10026๋ฒ ์ ๋ก์์ฝ (0) | 2023.02.12 |
[Python] ๋ฐฑ์ค 2775๋ฒ: ๋ถ๋ ํ์ฅ์ด ๋ ํ ์ผ (0) | 2023.02.04 |
[Python] ๋ฐฑ์ค ๊ทธ๋ฆฌ๋ ๋ฌธ์ ํ์ด ๋ชจ์ 11399, 11047, 1541 (0) | 2023.01.29 |