Study/Algorithm & Data structure
[백준][DP] 9095번 1,2,3 더하기 python (200923)
후이 (hui)
2020. 9. 23. 23:11
1. 문제설명
9095번: 1, 2, 3 더하기
각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다.
www.acmicpc.net
2. 풀이
1은 --> 1개 1 |
2는 --> 2개 1, 1 2 |
3은 --> 4개 1, 1, 1 2, 1 1, 2 3 |
4는 --> 7개 1,3 1,1,2 2, 2 1,1,1,1 2,1,1 1,2,1, 3,1 |
5는 --> 13개 1,1,1,1,1 1,1,2,1 1,2,1,1 2,1,1,1 1,1,1,2 2,2,1 1,2,2 2,1,2 3,1,1 1,3,1 1,1,3 2 3 3 2 |
import sys
N = int(sys.stdin.readline())
dp = [0,1,2,4]
input_num_list = []
for _ in range(N): # 입력받는 숫자의 갯수
input_num = int(sys.stdin.readline())
input_num_list.append(input_num)
max_num = max(input_num_list) # 제일 큰 숫자를 기준으로 채워 넣기
for idx in range(len(dp), max_num+1):
get_num = dp[idx - 1] + dp[idx - 2] + dp[idx - 3]
dp.append(get_num)
for num in input_num_list:
print(dp[num])
import sys
N = int(sys.stdin.readline())
dp = [0,1,2,4]
input_num_list = []
for _ in range(N): # 입력받는 숫자의 갯수
input_num = int(sys.stdin.readline())
for idx in range(len(dp), input_num + 1):
get_num = dp[idx - 1] + dp[idx - 2] + dp[idx - 3]
dp.append(get_num)
print(dp[input_num])
728x90
반응형