#문제

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

 

2193번: 이친수

0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않는다. 이친수에서는 1이 두 번 연속으로 나타나지 않는다. 즉, 11을 부분 문자열로 갖지 않는다. 예를 들면 1, 10, 100, 101, 1000, 1001 등이 이친수가 된다. 하지만 0010101이나 101101은 각각 1, 2번 규칙에 위배되

www.acmicpc.net

 

#작성 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
 
int n;
long long int pn[91][2];
// pn[i][0] : i자리 이친수. 0으로 끝나는것 개수
// pn[i][1] : i자리 이친수. 1으로 끝나는것 개수
 
int main(){
    cin>>n;
    pn[1][0= 0;
    pn[1][1= 1;
    
    for(int i=2; i<=n; i++){
        pn[i][0= pn[i-1][0+ pn[i-1][1];
        pn[i][1= pn[i-1][0];
    }
    cout<<pn[n][0]+pn[n][1]<<'\n';
    return 0;
cs

##

처음 제출했을 때 틀렸습니다 판정을 받았는데, n의 최대값인 90을 넣어보니 -값이 출력되었다.

-> int형에는 90자리수의 이친수 개수를 다 담을 수 없다.

=> long long int 형으로 pn배열을 선언해주었더니 AC판정을 받았다.

'BOJ' 카테고리의 다른 글

BOJ 11055번 :: 가장 큰 증가 부분 수열  (0) 2020.01.06
BOJ 11049번 :: 행렬 곱셈 순서  (0) 2020.01.06
BOJ 11057번 :: 오르막 수  (0) 2020.01.05
BOJ 9095번 :: 1, 2, 3 더하기  (0) 2020.01.05
BOJ 11066번 :: 파일 합치기  (0) 2020.01.04

+ Recent posts