문제
https://www.acmicpc.net/problem/9095
9095번: 1, 2, 3 더하기
각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다.
www.acmicpc.net
문제
정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 7가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다.
1+1+1+1
1+1+2
1+2+1
2+1+1
2+2
1+3
3+1
정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. n은 양수이며 11보다 작다.
예제 입력 1
3
4
7
10
예제 출력 1
7
44
274
풀이
t = int(input())
for _ in range(t):
n = int(input())
dp = [0] * (n+1)
for i in range(1, n+1):
if i==1:
dp[i] = 1
elif i==2:
dp[i] = 2
elif i==3:
dp[i] = 4
else:
dp[i] = dp[i-1] + dp[i-2] + dp[i-3]
print(dp[n])

설명
어떻게 접근해야 할 지 접근 방법 조차 알지 못했다ㅠㅠㅠ
브루트 포스 문제로 되어 있는거라고 하는데 도대체 어떻게 접근해야하는건지 참나ㅠㅠ
| n | 경우의 수 | 총 경우의 수 |
| 1 | 1 | 1 |
| 2 | 1+1 2 |
2 |
| 3 | 1+1+1 1+2 2+1 3 |
4 |
| 4 | 1+1+1+1 1+1+2 1+2+1 2+1+1 2+2 1+3 3+1 |
7 |
'Coding Test > Python' 카테고리의 다른 글
| [백준] N과 M (1) (0) | 2023.09.27 |
|---|---|
| [백준] 수 이어 쓰기 1 (0) | 2023.09.15 |
| [백준] 2609 - 최대공약수와 최소공배수 (0) | 2023.09.11 |
| [백준] ABCDE (1) | 2023.09.03 |
| [프로그래머스] 여행경로 (lv.3) (0) | 2023.08.28 |