최대 1 분 소요

1. 문제

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

  • DP 문제
// 문제
0 1로만 이루어진 수를 이진수라 한다. 
이러한 이진수  특별한 성질을 갖는 것들이 있는데, 
이들을 이친수(pinary number) 한다. 
이친수는 다음의 성질을 만족한다.

이친수는 0으로 시작하지 않는다.
이친수에서는 1   연속으로 나타나지 않는다. 
, 11 부분 문자열로 갖지 않는다.
예를 들면 1, 10, 100, 101, 1000, 1001 등이 이친수가 된다. 
하지만 0010101이나 101101 각각 1, 2 규칙에 위배되므로 이친수가 아니다.

N(1  N  90) 주어졌을 , 
N자리 이친수의 개수를 구하는 프로그램을 작성하시오.

// 입력
첫째 줄에 N이 주어진다.

// 출력
첫째 줄에 N자리 이친수의 개수를 출력한다.

// 예제 입력 1 
3

// 예제 출력 1 
2


2. 핵심 아이디어

  • n의 개수는 (n-2) + (n-1)


3. Python 문제풀이

import sys
input = sys.stdin.readline

arr = [0, 1, 1]
for i in range(3, 91) :
  arr.append(arr[i-2] + arr[i-1])
n = int(input())
print(arr[n])


4. Java 문제풀이


댓글남기기