[문제보기]
2193. 이친수
2193번: 이친수
0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않
www.acmicpc.net
[풀이과정]
이 문제는 4자리까지만 손으로 적어보면 바로 점화식이 나오는 문제이다.
1이 연속으로 나오는 것만 조심하면서 각 자리수의 이친수를 찾으면 되기 때문에, 이전에 나온 이친수에서
마지막이 1이 아닌 0으로 끝나는 이친수는 뒤로 1, 0이 붙을 수 있기 때문에 경우의 수가 2가 되고,
마지막이 1인 이친수는 무조건 0만 올수 있기 때문에 경우의 수가 1이 된다.
이렇게 늘어나는 숫자를 생각하면 피보나치 수가 형성이 되는 것을 볼 수가 있어
점화식도 피보나치 수를 구하는 식으로 사용을 하면 된다.
[소스코드]
#include <iostream>
using namespace std;
int main(){
long long dp[91] = {0};
dp[1] = 1;
dp[2] = 1;
for(int i = 3; i<91; i++){
dp[i] = dp[i-1] + dp[i-2];
}
int n;
cin >> n;
cout << dp[n];
}
[해결 과정 중 실수한 부분]
'알고리즘 스터디 > Beakjoon' 카테고리의 다른 글
| [백준 2748][C++] 피보나치 수2 (Silver 5) (0) | 2020.09.02 |
|---|---|
| [백준 2156][C++] 포도주 시식 (Silver 1) (0) | 2020.08.30 |
| [백준 1932][C++] 정수 삼각형 (Silver 1) (0) | 2020.08.29 |
| [백준 2579][C++] 계단 오르기 (Silver 3) (0) | 2020.08.28 |
| [백준 16235][C++] 나무 재테크 (Gold4) (0) | 2020.08.25 |