선릉역 1번 출구

baekjoon - 2193 본문

Algorithm/Algorithm 문제풀이

baekjoon - 2193

choideu 2021. 9. 13. 08:52

problem. 0으로 시작x, 1은 연속으로 들어갈 수 없음

 

key point

1 2
1 10

0으로 시작할 수 없으니 길이가 1인 경우는 1뿐이다. 그리고 길이가 2인 경우는 1뒤에 1이 연속으로 올 수 없기 때문에 10뿐이다.

핵심 포인트는 1뒤에는 1이 올 수 없으니 길이가 n이면서 마지막 숫자가 1인 경우는 n-1에서 마지막 숫자가 0으로 끝나는 수와 같다. 0의 경우는 1, 0 뒤에 모두 올 수 있기 때문에 이전 n-1의 sum()값이다. 

그럼 이제 배열은 선언해주어야 하는데 type이 0, 1 2개이기 때문에 dp[n + 1][2]으로 선언을 해준다.

n = int(input())
dp = [[0 for _ in range(2)] for _ in range(n + 1)]
dp[1][1] = 1

for i in range(2, n + 1):
    dp[i][0] = sum(dp[i - 1])
    dp[i][1] = dp[i - 1][0]

print(sum(dp[n]))

 

'Algorithm > Algorithm 문제풀이' 카테고리의 다른 글

baekjoon - 14002  (0) 2021.09.16
baekjoon - 11053  (0) 2021.09.15
baekjoon - 10844  (0) 2021.09.13
baekjoon - 15990  (0) 2021.09.13
baekjoon - 10799  (0) 2021.08.30
Comments