728x90

9095번: 1, 2, 3 더하기
각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다.
www.acmicpc.net
Baekjoon 9095. 1, 2, 3 더하기
[파이썬(python) - DP]
정수 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보다 작다.
출력
각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다.
입력 예시
3
4
7
10
출력 예시
7
44
274
❧ 정답
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from sys import stdin | |
t = int(stdin.readline()) | |
d = [0] * 12 | |
d[1], d[2], d[3] = 1, 2, 4 | |
for i in range(4, 12): | |
d[i] = d[i-3] + d[i-2] + d[i-1] | |
for _ in range(t): | |
n = int(stdin.readline()) | |
print(d[n]) |
🔎IDEA) DP - 주어진 수 n에 대하여 n을 완성하기 직전에 1을 더하는 경우
, 2를 더하는 경우
, 3을 더하는 경우
의 값을 모두 더해준다.
[Line 6]
👉 입력값 제한이 11까지 이므로 n = 11
까지의 DP 테이블을 모두 완성한 뒤 d[n]을 출력한다.
👉 초기화하지 않은 d[4]
부터 d[11]
까지 값을 채워준다.
이때, '타겟으로 한 값(i)' 에서 '-3한 값(d[i - 3])' 과 '-2한 값(d[i - 2])' 과 '-1한 값(d[i - 1])' 을 모두 더해준다.
- Ex. '-3한 값(d[i - 3])' 의 의미
i를 만들기 바로 직전에-3
을 더하는 경우를 의미한다.
728x90
'📊 Algorithm > Algorithm PS' 카테고리의 다른 글
[알고리즘 일기 - 파이썬] 186. 퇴사 (0) | 2022.02.28 |
---|---|
[알고리즘 일기 - 파이썬] 185. 정수 삼각형 (0) | 2022.02.27 |
[알고리즘 일기 - 파이썬] 183. 1로 만들기 (0) | 2022.02.27 |
[알고리즘 일기 - 파이썬] 182. 고정점 찾기 (0) | 2022.02.22 |
[알고리즘 일기 - 파이썬] 181. 정렬된 배열에서 특정 수의 개수 구하기 (0) | 2022.02.22 |