https://www.acmicpc.net/problem/2193
Solution
이친수를 한 자리 수 부터 써나가다보면 특징을 알 수 있다.
N이 6일때를 보자
1 | 2 | 3 | 4 | 5 | 6 | |
1 | 1 | 10 | 100 | 10000 | 10000 | 100000 |
2 | 101 | 1010 | 10100 | 101000 | ||
3 | 1001 | 10010 | 100100 | |||
4 | 10001 | 100010 | ||||
5 | 10101 | 101010 | ||||
6 | 100001 | |||||
7 | 101001 | |||||
8 | 100101 |
N이 6일때 빨간 부분으로 표시한 숫자는 5열의 숫자를 그대로 가져와서 뒤에 0만 더해주었다.
N이 6일때 파란 부분으로 표시한 숫자는 4열의 숫자를 그대로 가져와서 뒤에 01만 더해주었다.
다시 말해 이친수(N)은 N-1과 N-2를 더한 값이다.
따라서 피보나치 수열을 따르는 값을 가진다. (1-1-2-3-5-8...)
Python Code
N = int(input())
#피보나치 수열과 같다
if N == 1:
print(1)
elif N == 2:
print(1)
else:
temp_1 = 1
temp_2 = 1
current = 0
for _ in range(N-2):
current = temp_1 + temp_2
temp_1 = temp_2
temp_2 = current
print(current)
'Programming [Python] > 백준 알고리즘 솔루션' 카테고리의 다른 글
#267 백준 파이썬 [6603] 로또 (0) | 2019.12.09 |
---|---|
#266 백준 파이썬 [10867] 중복 빼고 정렬하기 (0) | 2019.12.09 |
#264 백준 파이썬 [10995] 별 찍기 - 20 (0) | 2019.12.09 |
#263 백준 파이썬 [2583] 영역 구하기 - BFS (0) | 2019.12.08 |
#262 백준 파이썬 [1158] 조세퍼스 문제 (2) | 2019.12.08 |