~๋ชฉ์ฐจ~
๋ฌธ์
https://www.acmicpc.net/problem/9095
๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ
- DP(๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ)์ ์ ํ์ ์ธ ๋ฌธ์ ์ด๋ค
- DP๋ ํ๋ฒ ์งํํ ๊ณ์ฐ์ ๋ํด์ ์ ์ฅ ํด๋๊ณ ๋ ๋ฐ์์ ๊ณ์ฐ ๊ฐ๋ง ์ฌ์ฉํ๋ค.
- ํด๋น ์ฝ๋์์ numbers ๋ฐฐ์ด์ ๊ณ์ฐ ๊ฒฐ๊ณผ ๊ฐ์ ์ ์ฅํด๋๋ ์ญํ ์ ํ๋ค.
- 1, 2, 3์ ์ด์ฉํ์ฌ 1, 2, 3์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์๊ฐํด๋ณด์
1 = 1
1์ ๋ง๋๋ ๋ฐฉ๋ฒ์ 1๊ฐ(numbers[1] = 1)
2 = 1 + 1
2 = 2
2๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ 2๊ฐ(numbers[2] = 2)
3 = 1 + 1 + 1
3 = 1 + 2
3 = 2 + 1
3 = 3
3์ ๋ง๋๋ ๋ฐฉ๋ฒ์ 4๊ฐ(numbers[3] = 4)์์ ์ ์ ์๋ค.
- ๊ทธ๋ ๋ค๋ฉด 4๋ ์์ ๊ตฌํ ๊ณ์ฐ์ ํ์ฉํ์ฌ ์ด๋ป๊ฒ ๊ตฌํ ์ ์์๊น?
4 = 1 + 3
4 = 1 + 1 + 2
4 = 2 + 2
4 = 1 + 1 + 1 + 1
4 = 1 + 2 + 1
4 = 2 + 1 + 1
4 = 3 + 1
๊ท์น์ฑ์ ์ฐพ์ผ์ จ๋์?! ๊ทธ๋ ๋ค๋ฉด ๋น์ ์ ์ฒ์ฌ๐
4๋ฅผ ๋ง๋ค ์ ์๋ ๊ฒฝ์ฐ์ ์๋
1์ ๋ง๋ค ์ ์๋ ๊ฒฝ์ฐ์ ๋ชจ๋ 3์ ๋ํ๋ฉด ๋ง๋ค ์ ์๊ณ
2๋ฅผ ๋ง๋ค ์ ์๋ ๊ฒฝ์ฐ์ ๋ชจ๋ 2๋ฅผ ๋ํ๋ฉด ๋ง๋ค ์ ์๊ณ
3์ ๋ง๋ค ์ ์๋ ๊ฒฝ์ฐ์ ๋ชจ๋ 1์ ๋ํ๋ฉด ๋ง๋ค ์ ์์ต๋๋ค.
๊ฒฐ๊ตญ numbers[1] + numbers[2] + numbers[3] = numbers[4]๊ฐ ๋๋ ๊ฒ์ ๋๋ค.
์ด๋ฅผ ํ์คํ ํ๋ฉด ' a > 3'์ผ ๋, numbers[a] = numbers[a-3] + numbers[a-2] + numbers[a-1] ์ด ๋ฉ๋๋ค
์์ฑ ์ฝ๋
import sys
input = sys.stdin.readline
# ๊ฐ ์ธ๋ฑ์ค ๊ฐ์ ๋ง๋ค ์ ์๋ ๊ฐ์ ์ ์ฅ
# 1์ 1๊ฐ, 2๋ 2๊ฐ, 3์ 4๊ฐ์ ๋ง๋ค ์ ์๋ ์กฐํฉ์ด ์กด์ฌ ํจ
numbers = [0, 1, 2, 4] + [0]*7
n = int(input())
for i in range(4, 11):
numbers[i] = numbers[i-3] + numbers[i-2] + numbers[i-1] # ์ ํ์
# print(numbers) # [0, 1, 2, 4, 7, 13, 24, 44, 81, 149, 274]
for i in range(n):
m = int(input()) # ๊ฐ ์๊ตฌ ๊ฐ์ (๋ง๋ค ์ ์๋) ๊ฐ์ ๋ฐํ
print(numbers[m])
๋์์ด ๋์ จ๋ค๋ฉด ์ข์์ ๋๋ฌ์ฃผ์ธ์๐
REFERENCE
'๐๋ฌธ์ ํ์ด > ๐งฉBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python] ๋ฐฑ์ค 16953 A -> B | ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ | BFS (0) | 2023.06.09 |
---|---|
[Python] ๋ฐฑ์ค 1003 ํผ๋ณด๋์น ํจ์ | DP (0) | 2023.06.08 |
[Python] ๋ฐฑ์ค 1715 ์นด๋ ์ ๋ ฌํ๊ธฐ | ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ (0) | 2023.06.06 |
[Python] ๋ฐฑ์ค 1774 ์ฐ์ฃผ์ ๊ณผ์ ๊ต๊ฐ | ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ (0) | 2023.05.29 |
[Python] ๋ฐฑ์ค 21924 ๋์ ๊ฑด์ค | ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ (2) | 2023.05.29 |