문제의 조건을 살펴보자.
1. 0으로 시작하지 않는다.
2. 1이 두 번 연속으로 나타나지 않는다.
이를 간단하게 나타내보자.
1. 1로 시작한다.
2. 1뒤에는 0이 온다.
3. 0뒤에는 1또는 0이 온다.
코드를 작성하기 전, 예시를 몇 개 작성해보자
위 예시를 표로 나타내면 아래와 같다.
처음에 찾은 규칙이랑 같이 고려해보면 점화식을 찾을 수 있다.
n의 0의 개수 : 0개 ( n = 1 )
n의 1의 개수 : 1개 ( n = 1 )
n의 0의 개수 : n -1의 0의 개수 + n - 1의 1의 개수 ( n > 1 )
n의 1개 개수 : n - 1의 0의 개수 ( n > 1 )
num = int(input())
zero = 0
one = 1
for _ in range(num - 1):
tmp = zero
zero += one
one = tmp
print(zero + one)
'알고리즘 > 백준' 카테고리의 다른 글
[BOJ] [Python] 11055번 : 가장 큰 증가 부분 수열 (1) | 2021.07.27 |
---|---|
[BOJ] [Python] 1213번 : 팰린드롬 만들기 (1) | 2021.07.27 |
[BOJ] [Python] 2156번 : 포도주 시식 (2) | 2021.07.27 |
[BOJ] [Python] 11726번 : 2xn 타일링 (1) | 2021.06.26 |
[BOJ] [Python] 11399번 : ATM (3) | 2021.06.26 |