BOJ::2193 이친수

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


n자리 이친수가 될 수 있는 경우의 수를 구하는 dp문제.


--이친수--

1자리 : 1

2자리 : 10

3자리 : 100, 101

4자리 : 1000, 1001, 1010

.

.

.

n자리 : ?

10xxxxxxx : d[n-2]

1xxxxxxxx : n-1번째 이친수의 맨 앞자리를 0으로 바꾼 수만큼 올 수있다 -> d[n-1]

즉, d[n] = d[n-1]+d[n-2] 라는 점화식을 세울 수 있다.


<JAVA>


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
public class Main {
 
    static long d[]=new long[91];
 
    public static void main(String args[]) throws NumberFormatException, IOException
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        d[1]=1;
        for(int i = 2 ; i <= n ; i++){
            d[i]=d[i-1]+d[i-2];
        }
        System.out.println(d[n]);
    }
}
cs

  

<C++>


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
 
int n;
long d[91];
 
int main() {
    cin >> n;
    d[1= 1;
 
    for (int i = 2; i <= n; i++) {
        d[i] = d[i - 1+ d[i - 2];
    }
    cout << d[n] << endl;
}
cs


'BOJ::문제풀이' 카테고리의 다른 글

2217 로프  (0) 2018.01.01
2206 벽 부수고 이동하기  (2) 2018.01.01
2178 미로 탐색  (0) 2018.01.01
2156 포도주 시식  (0) 2018.01.01
2096 내려가기  (0) 2018.01.01

+ Recent posts