코딩테스트

[BOJ_2193/JAVA] 이친수

Eun 2022. 1. 11. 20:00

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

 

2193번: 이친수

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

www.acmicpc.net

문제

풀이

이 문제는 실버3이라서 그런지 점화식 도출까지 쉬웠다!!

2차원 배열을 만들어서 끝자리가 0인경우와 1인경우를 각각 저장하여 식을 출력하였다.

 

그리고 이 문제의 중요한 점은 2차원 배열 선언할 때 타입형을 조심해야한다!!! int로 했다가 틀렸다고 나온 ㅎ 

코드

package Week07;

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

public class BOJ2193 {

	public static void main(String[] args) throws NumberFormatException, IOException {
		// TODO Auto-generated method stub
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int n = Integer.parseInt(br.readLine());
	
		long dp[][] = new long[n+1][2];
		
		dp[1][0]=0;
		dp[1][1]=1;
		
		for(int i=2;i<=n;i++) {
			for(int j=0;j<2;j++) {
				if(j==0) {
					dp[i][j]=dp[i-1][j+1]+dp[i-1][j];
				}else {
					dp[i][j]=dp[i-1][0];
				}

			}
		}
		
		long ans=0;
		
		for(int i=0;i<2;i++) {
			ans+=dp[n][i];
		}
		
		System.out.println(ans);

	}

}