IT's 우

[java, 동적 계획법 dynamic programming] 백준2193번 이친수 본문

알고리즘/백준

[java, 동적 계획법 dynamic programming] 백준2193번 이친수

디우 2022. 8. 23. 02:10
728x90

출처:

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

 

2193번: 이친수

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

www.acmicpc.net

 

정답 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        
        int N=sc.nextInt();
        long[] One=new long[N+1];
        long[] Zero=new long[N+1];
    
        One[1]=1;
        Zero[1]=0;
        
        if(N>=2) {
            for(int i=2;i<=N;i++) {
                One[i]=Zero[i-1];
                Zero[i]=One[i-1]+Zero[i-1];
            }
        }
        
        System.out.println(One[N]+Zero[N]);
    }
}
cs

풀이

i자리에 01의 개수

1
2
3
long[] One=new long[N+1];
long[] Zero=new long[N+1];
cs

 

i자리에 올 수 있는 1의 개수

  =  i-1자리에 온 0의 개수

1
One[i]=Zero[i-1];
cs

 

i자리에 올 수 있는 0의 개수

  = i-1자리에 온 0의 개수 + i-1자리에 온 1의 개수

1
Zero[i]=One[i-1]+Zero[i-1];
cs

 

i자리 이친수의 개수

  = i자리에 올 수 있는 0의 개수 + i자리에 올 수 있는 1의 개수

1
One[N]+Zero[N];
cs
728x90
반응형