반응형
문제
정수 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 |
풀이
주어진 정수를 1, 2, 3 의 합으로 나타내는 방법의 가짓수를 찾는 문제이다.
다이나믹 프로그래밍으로 풀 수 있지만, n이 작아 재귀로도 문제없을 것 같아서
모든 경우의 수를 검사하는 브루트 포스 알고리즘을 활용했다.
만약 다이나믹 프로그래밍으로 풀려면, dp(n) = dp(n-3) + dp(n-2) + dp(n-1) 의 공식을 이용할 수 있다.
for i in range(int(input())):
n = int(input())
count = 0
def bf(t):
global count
if t == n:
count += 1
return
for i in range(1,4):
if t+i > n:
return
bf(t+i)
bf(0)
print(count)
반응형
'알고리즘 연습 > 브루트 포스' 카테고리의 다른 글
[🥇5 / 백준 1107 / 파이썬] 리모컨 (0) | 2021.08.11 |
---|---|
[🥈4 / 백준 14501 / 파이썬] 퇴사 (0) | 2021.07.22 |
[🥈4 / 백준 17626 / 파이썬] Four Squares (0) | 2021.07.13 |
[🥈3 / 백준 18111 / 파이썬] 마인크래프트 (0) | 2021.07.11 |
[🥈5 / 백준 1436 / 파이썬] 영화감독 숌 (0) | 2021.06.03 |