문제
2193번: 이친수
0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않
www.acmicpc.net
코드
My answer
from sys import stdin
n = int(stdin.readline())
dp=[[0,0] for i in range(n+1)]
dp[1]=[0,1]
for i in range(2,n+1):
dp[i][0]=dp[i-1][0]+dp[i-1][1]
dp[i][1]=dp[i-1][0]
print(sum(dp[n]))
Another answer
a=b=1
for _ in range(int(input())-2):
a,b= a+b,a
print(a)
풀이

이전 dp들처럼 우선 i를 자릿수, j를 끝자리로 두고 규칙을 찾아보니까 위처럼 규칙이 나왔다. 맨뒤에 0이 나오면 1을 무조건적으로 붙여도 되는데 1이나오면 0을 붙여야한다. 따라서 위의 점화식과 같은 식이 나온다.내 코드말고 아래 코드는 동일한테 역시나 1차원 배열만 이용해서 문제를 풀었다.
dp[i][0]=dp[i-1][0]+dp[i-1][1]
dp[i][1]=dp[i-1][0]
728x90
'코딩테스트 > 백준[Python]' 카테고리의 다른 글
| [Python] 백준 #10819- 차이를 최대로 (0) | 2021.12.28 |
|---|---|
| [Python] 백준 #9465- 스티커[try_again] (0) | 2021.12.21 |
| [Python] 백준 #110570- 오르막 수 (0) | 2021.12.21 |
| [Python] 백준 #10844- 쉬운 계단 수[Try_again] (0) | 2021.12.21 |
| [Python] 백준 #9095- 1,2,3 더하기 (0) | 2021.12.17 |