Koala - 11기/코딩테스트 준비 스터디
[백준/python] 9625번: BABBA
에우젠
2023. 7. 23. 23:02
문제 https://www.acmicpc.net/problem/9625
알고리즘 분류
- 다이나믹 프로그래밍
코드
K = int(input())
dp = [[0 for _ in range(2)] for _ in range(K+1)]
dp[0] = [1, 0]
dp[1] = [0, 1]
for i in range(2, K+1):
dp[i][0] = dp[i-1][0] + dp[i-2][0]
dp[i][1] = dp[i-1][1] + dp[i-2][1]
print(dp[K][0], dp[K][1])
풀이
직접 써서 계산해보면
1번째: b
2번째: ba
3번째: bab => ba + b
4번째: babba => bab + ba
로 n-1번째와 n-2번째를 더한 것이 n번째임을 알 수 있다
때문에 b와 a의 개수도 n-1번째와 n-2번째를 더한 것이 된다
점화식: F(n) = F(n-1) + F(n-2)