https://www.acmicpc.net/problem/9095
9095번: 1, 2, 3 더하기
각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다.
www.acmicpc.net
이것도 꽤 자주? 접했던 유형의 문제였다.
n을 1, 2, 3의 합으로 나타내야 할 때 가능한 경우는 n-1 + 1 , n-2 + 2, n-3 + 3의 세 가지 경우이므로
dp[i] = dp[i-1] + dp[i-2] + dp[i-3] 로 구할 수 있다.
초기값
dp[1] = 1 //1
dp[2] = 2 // 2, 1+1
dp[3] = 4 //3, 2+1, 1+2, 1+1+1
import sys
input = sys.stdin.readline
T = int(input())
dp = [0] * 11
dp[0] = 1
dp[1] = 2
dp[2] = 4
for i in range(3, 11):
dp[i] = dp[i-1] + dp[i-2] + dp[i-3]
for _ in range(T):
n = int(input())
print(dp[n-1])
'알고리즘💻 > DP' 카테고리의 다른 글
BOJ 11568번: 민균이의 계략 (0) | 2021.08.02 |
---|---|
BOJ 1451번: 직사각형으로 나누기 (0) | 2021.08.02 |
BOJ 11048: 이동하기 (0) | 2021.08.01 |
BOJ 1932번: 정수 삼각형 (0) | 2021.08.01 |
BOJ 1149번: RGB거리 (0) | 2021.05.05 |
https://www.acmicpc.net/problem/9095
9095번: 1, 2, 3 더하기
각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다.
www.acmicpc.net
이것도 꽤 자주? 접했던 유형의 문제였다.
n을 1, 2, 3의 합으로 나타내야 할 때 가능한 경우는 n-1 + 1 , n-2 + 2, n-3 + 3의 세 가지 경우이므로
dp[i] = dp[i-1] + dp[i-2] + dp[i-3] 로 구할 수 있다.
초기값
dp[1] = 1 //1
dp[2] = 2 // 2, 1+1
dp[3] = 4 //3, 2+1, 1+2, 1+1+1
import sys
input = sys.stdin.readline
T = int(input())
dp = [0] * 11
dp[0] = 1
dp[1] = 2
dp[2] = 4
for i in range(3, 11):
dp[i] = dp[i-1] + dp[i-2] + dp[i-3]
for _ in range(T):
n = int(input())
print(dp[n-1])
'알고리즘💻 > DP' 카테고리의 다른 글
BOJ 11568번: 민균이의 계략 (0) | 2021.08.02 |
---|---|
BOJ 1451번: 직사각형으로 나누기 (0) | 2021.08.02 |
BOJ 11048: 이동하기 (0) | 2021.08.01 |
BOJ 1932번: 정수 삼각형 (0) | 2021.08.01 |
BOJ 1149번: RGB거리 (0) | 2021.05.05 |