알고리즘/문제 풀이
BOJ 2193 - 이친수
도그rin
2023. 2. 11. 16:49
입력
- N 입력 (1 ≤ N ≤ 90)
출력
- N자리 이친수의 개수 출력
풀이 방법
- N이 2일 때 이친수는 10으로, 1개
- N이 3일 때 이친수는 101, 100으로, 2개
- N이 4일 때 이친수는 1001, 1010, 1000으로,
10(01) - N이 2일 때의 이친수에 01을 덧붙인 수 101(0), 100(0) - N이 3일 때의 이친수에 0을 덧붙인 수 따라서 N=4일 때의 이친수 개수는 (N=2일 때의 이친수 개수)+(N=3일 때의 이친수 개수) = 1+2 = 3 |
- N이 5일 때 이친수는 10101, 10001, 10010, 10100, 10000으로,
101(01), 100(01) - N이 3일 때의 이친수에 01을 덧붙인 수 1001(0), 1010(0), 1000(0) - N이 4일 때의 이친수에 0을 덧붙인 수 따라서 N=5일 때의 이친수 개수는 2+3 = 5 |
- 이를 일반화하면,
(N자리 이친수의 개수) = ((N-1)자리 이친수의 개수) + ((N-2)자리 이친수의 개수) |
코드
import java.util.Scanner;
public class BOJ_2193 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int N=sc.nextInt(); // 자연수 N 입력
long[] dp=new long[91];
dp[1]=1;
dp[2]=1;
for(int i=3;i<=N;i++) { // 다이나믹 프로그래밍
dp[i]=dp[i-1]+dp[i-2];
}
System.out.println(dp[N]);
}
}