https://www.acmicpc.net/problem/9095
9095번: 1, 2, 3 더하기
각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다.
www.acmicpc.net
import sys
input = sys.stdin.readline
T = int(input())
for _ in range(T):
n = int(input())
dp = [0]*(max(4,n+1))
dp[1], dp[2], dp[3] = 1, 2, 4
if n >= 4:
for i in range(4, n+1):
dp[i] = dp[i-1] + dp[i-2] + dp[i-3]
print(dp[n])
처음에 dp = [0] * (n+1) 했다가 런타임 에러가 떴었다.
이유: n=3 이하인 경우 dp 범위를 초과하는 값에 할당해줬기 때문...
그래서 dp의 값을 최소 4로 하던가, n=1,n=2,n=3일 때를 각각 if문으로 처리해줘야 한다
'백준' 카테고리의 다른 글
백준 1149. RGB거리 (0) | 2024.03.10 |
---|---|
백준 2579. 계단 오르기 (0) | 2024.03.10 |
백준 10844. 쉬운 계단 수 (0) | 2024.03.08 |
백준 4883. 삼각 그래프 (0) | 2024.03.07 |
백준 16139. 인간-컴퓨터 상호작용 (0) | 2024.03.06 |