백준 2193, 이천수

2021. 9. 13. 16:13CodingTest

문제

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

 

2193번: 이친수

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

www.acmicpc.net

 

문제풀이

n pinary number output
1 1 1
2 10 1
3 100, 101 2
4 1000, 1001, 1010 3
5 10000, 10001, 10010, 10100, 10101 5
6 100000, 100001, 100010, 100100, 100101, 101000, 101001, 101010 8

n의 수에 따른 n자리의 이천수의 개수는 피보나치 수를 따르는 것을 알 수 있습니다.

 

소스코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class Main {
	public static long solution(long[] dp, int n)
	{
		if(dp[n]!=0)
		{
			return dp[n];
		}
		
		if(n<=2)
		{
			dp[n] = 1;
		}else {	
			dp[n] = solution(dp, n-1) + solution(dp, n-2);
		}
		return dp[n];
	}
	
	public static void main(String args[]) throws IOException
	{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int n = Integer.parseInt(br.readLine());
		long[] dp = new long[n+1];
		System.out.println(solution(dp,n));
	}
}

 

'CodingTest' 카테고리의 다른 글

백준 1149, RGB 거리  (0) 2021.10.05
백준 15649, N과 M (1)  (0) 2021.09.22
백준 11653, 소인수분해  (0) 2021.09.08
프로그래머스 위클리 챌린지 6주차  (0) 2021.09.08
백준 11726, 2 x n 타일링  (0) 2021.09.06