백준 온라인 저지
백준 2193: 이친수
dev_doyle
2018. 7. 9. 11:15
이친 수 문제 1이 연속으로 나오지 않는 이진수를 말한다. 풀이는 상당히 쉽게 떠오르는데 다이나믹 프로그래밍을 사용하면 된다. 나는 강의를 듣고 있는지라 바로 다이나믹인 걸 알고 있으나.. 그렇지 않아도 충분히 떠오를만 하다. 일단 이친수의 자리 수를 n이라고 하면 끝이 0으로 끝나면 d[n]0]에 1로 끝나면 d[n][1]에 저장하면 d[n][i] += d[n -1][k] (k는 0일 때는 i가 0, 1 둘 다 더해주고 1일 때는 0 부분에만 더해주면 되겠다.) 같은 점화식으로 표현할 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #include <iostream> using namespace std; int input = 0; long long d[100][2]; int main() { cin >> input; d[1][0] = 0; d[1][1] = 1; for(int i = 2;i <= input; ++i) { d[i][1] += d[i - 1][0]; d[i][0] += d[i - 1][1]; d[i][0] += d[i - 1][0]; } long long ans = d[input][0] + d[input][1]; cout << ans; } | cs |