티스토리 뷰

728x90
반응형

문제

https://www.acmicpc.net/problem/2193

 

2193번: 이친수

0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않

www.acmicpc.net

 

코드

n = int(input())
dp = [0 for _ in range(90)]
dp[0] = 1
dp[1] = 1
dp[2] = 2
for i in range(3, n):
    for j in range(i-1): # i자릿수 - 2 까지 전부 더하고 +1
        dp[i] += dp[j]
    dp[i] += 1
print(dp[n-1])

n = 6 일때
1 0 0 0 0 0 - 6
1 0 0 0 0 1 - 1
1 0 0 0 1 0 - 2
1 0 0 1 0 0 - 3
1 0 0 1 0 1 - 3
1 0 1 0 0 0 - 4
1 0 1 0 1 0 - 4
1 0 1 0 0 1 - 4


4자릿수 + 3자릿수 + 2자릿수 + 1자릿수 + 1

구하고자 하는 자릿수 - 2 까지 전부 더하고 새로운 자릿수 + 1 해주면 된다.

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31