반응형
문제
https://www.acmicpc.net/problem/9095
문제 풀이
위 그림처럼 4를 표현할때, 1+ 시작하는 값에서 1+를 떼고 보면 3을 표현하는 모든 방법의 수이다.
2+는 4-2 = 2를 표현하는 방법의 수이고, 3+는 4-3 = 1을 표현하는 방법의 수이다.
정리하면, 4는 3을 표현하는 방법의 수 + 2를 표현하는 방법의수 + 1을 표현하는 방법의 수 이다.
(중복되는 값은 없음. 왜냐면 1+2+1 와 2+1+1 는 다른 방법으로 세야하니까)
이런식으로 i번째는 1+(i-1)번째의 표현 방법의 수 + 2+(i-2)수의 표현 방법 + 3+(i-3)의 표현 방법
dp로 표현하면 dp[i] = dp[i-1] + dp[i-2] + dp[i-3]
코드
import sys
input = sys.stdin.readline
T = int(input().strip())
dp = [0 for _ in range(11+1)]
dp[1] = 1
dp[2] = 2
dp[3] = 4
for i in range(4,len(dp)):
dp[i] = dp[i-1] + dp[i-2] + dp[i-3]
# print(dp)
for t in range(T):
n = int(input().strip())
print(dp[n])
반응형
'알고리즘 > 백준 문제풀이' 카테고리의 다른 글
[boj] 백준 11123 양 한마리... 양 두마리... python 풀이 (0) | 2023.08.13 |
---|---|
[boj] 백준 20058 마법사 상어와 파이어스톰 python 풀이 (0) | 2023.08.12 |
[boj] 백준 14503 로봇 청소기 python 풀이 (0) | 2023.08.10 |
[boj] 백준 15657 N과 M (8) python 풀이 (0) | 2023.08.10 |
[boj] 백준 15655 N과 M (7) python 풀이 (0) | 2023.08.08 |