문제
알고리즘
- 2의 제곱일때마다 전체 dp에+이전 dp값을 더해준다.
코드
import sys
n = int(sys.stdin.readline())
dp = [0] * (n + 1)
dp[0] = 1
# 1 => 1, 1가지
# 2 => 2 11, 2가지
# 3 => 21 111, 2가지
# 4 => 4 22 211 1111, 4가지
# 5 => 41 221 2111 11111 4가지
two = [2 ** k for k in range(21)] # 2^k
# 반복문을 통해 2의 멱수의 합을 구한다.
for i in two:
if i <= n:
for j in range(i, n + 1):
dp[j] += (dp[j - i]) % 1000000000
print(dp[n] % 1000000000)
github
'CodingTest > Baekjoon' 카테고리의 다른 글
[baekjoon] 백준 1660번(파이썬): 캡틴 이다솜 (0) | 2022.02.07 |
---|---|
[baekjoon] 백준 2502번(파이썬): 떡 먹는 호랑이 (0) | 2022.02.06 |
[baekjoon] 백준 2302번(파이썬): 극장 좌석 (0) | 2022.02.02 |
[baekjoon] 백준 2294번(파이썬): 동전 2 (0) | 2022.02.01 |
[baekjoon] 백준 2011번(파이썬): 암호코드 (0) | 2022.01.31 |