문제 링크
https://www.acmicpc.net/problem/9095
문제
정수 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의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오.
풀이
n | 1 | 2 | 3 | 4 | 5 | 6 |
합으로 나타내는 방법 |
1 | 1+1 2 |
1+1+1 2+1 1+2 3 |
1+1+1+1 2+1+1 1+2+1 1+1+2 2+2 3+1 1+3 |
1+1+1+1+1 2+1+1+1 1+2+1+1 1+1+2+1 1+1+1+2 2+2+1 2+1+2 1+2+2 3+1+1 1+3+1 1+1+3 3+2 2+3 |
1+1+1+1+1+1 2+1+1+1+1 1+2+1+1+1 1+1+2+1+1 1+1+1+2+1 1+1+1+1+2 2+2+1+1 2+1+2+1 2+1+1+2 1+2+1+2 1+2+2+1 1+1+2+2 2+2+2 3+1+1+1 1+3+1+1 1+1+3+1 1+1+1+3 3+2+1 3+1+2 2+3+1 2+1+3 1+3+2 1+2+3 3+3 |
방법 수 (cnt[n]) |
1 | 2 | 4 | 7 | 13 | 24 |
cnt[1] = 1
cnt[2] = 2
cnt[3] = 4
cnt[4] = 7 = cnt[1] + cnt[2] + cnt[3]
cnt[5] = 13 = cnt[2] + cnt[3] + cnt[4]
cnt[6] = 24 = cnt[3] + cnt[4] + cnt[5]
...
cnt[i] = cnt[i-3] + cnt[i-2] + cnt[i-1]
정답 코드
import sys
input = sys.stdin.readline
t = int(input())
cnt = [0] * 11
cnt[1] = 1
cnt[2] = 2
cnt[3] = 4
for i in range(4, 11):
cnt[i] = cnt[i-3] + cnt[i-2] + cnt[i-1]
for _ in range(t):
n = int(input())
print(cnt[n])
반응형
'Algorithm > 백준 (BOJ)' 카테고리의 다른 글
[Python] 백준/BOJ 2579번: 계단 오르기 (0) | 2023.03.21 |
---|---|
[Python] 백준/BOJ 11726번: 2×n 타일링 (0) | 2023.03.20 |
[Python] 백준/BOJ 2346번: 풍선 터뜨리기 (0) | 2023.02.27 |
[Python] 백준/BOJ 1021번: 회전하는 큐 (0) | 2023.02.27 |
[Python] 백준/BOJ 18258번: 큐 2 (0) | 2023.02.26 |