본문 바로가기
Algorithm 💫/Problem Solving

[백준 2193번 이친수 / C++]

by 돼지고기맛있다 2020. 12. 2.
반응형

www.acmicpc.net/problem/2193

 

2193번: 이친수

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

www.acmicpc.net

처음 문제를 접했을 때.. 백트래킹부터 생각이났고! ㅎㅅㅎ 백트래킹으로 문제를 접근하였다..허허

결과는 시간초과였고 다시 문제를 풀어보는 수 밖에 없었다.

 

그렇다면 각 자리수에 따라 조건에 맞는 수의 개수에서의 규칙을 찾은 후 디피로 풀어보는 수 밖에 없었다ㅠ

 

처음 dp[1], dp[2]은 1로 채워주었고,,!나머지는 dp[n]=dp[n-1]+dp[n-2]로 배열을 채워주어면 완성시킬 수 있었다!

 

#include <iostream>
using namespace std;
long long dp[91];
void func(int n)
{
    for (int i = 3; i <= n; i++)
        dp[i] = dp[i - 2] + dp[i - 1];
}
int main()
{
    int N;
    cin >> N;
    dp[1] = 1;
    dp[2] = 1;
    func(N);
    cout << dp[N] << "\n";
    return 0;
}
반응형

댓글