반응형

 

 

<코드>

#include<iostream>
#include<algorithm>
using namespace std;

long long n, dp[1001];

int main()
{
	dp[1] = 1;
	dp[2] = 1;
	dp[3] = 2;
	cin >> n;

	for (int i = 3; i <= n; i++)
	{
		dp[i] = 1; // 1000....0 과 같은 경우의 수
		for (int j = 1; j <= i - 2; j++)
		{
			dp[i] += dp[j];
		}
	}
	cout << dp[n];
}

 

풀이 방법

 

4자리 수

  • 1000
  • 1001
  • 1010

dp[4] = 1 + dp[1] + dp[2]

 

5자리 수

  • 10000
  • 10001
  • 10010
  • 10100
  • 10101

dp[5] = 1 + dp[1] + dp[2] + dp[3]

 

6자리 수

  • 100000
  • 100001
  • 100010
  • 100100
  • 100101
  • 101000
  • 101001
  • 101010

dp[6] = 1 + dp[1] + dp[2] + dp[3] + dp[4]

 

www.acmicpc.net/problem/2193

 

2193번: 이친수

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

www.acmicpc.net

 

반응형

+ Recent posts