μ•Œκ³ λ¦¬μ¦˜/λ¬Έμ œν’€μ΄ Baekjoon

[λ°±μ€€] λ‹€μ΄λ‚˜λ―Ή ν”„λ‘œκ·Έλž˜λ° - 2193. 이친수

λ˜νš¨λ‹ˆ 2020. 4. 2. 23:28

문제

0κ³Ό 1둜만 이루어진 수λ₯Ό μ΄μ§„μˆ˜λΌ ν•œλ‹€. μ΄λŸ¬ν•œ μ΄μ§„μˆ˜ 쀑 νŠΉλ³„ν•œ μ„±μ§ˆμ„ κ°–λŠ” 것듀이 μžˆλŠ”λ°, 이듀을 이친수(pinary number)라 ν•œλ‹€. μ΄μΉœμˆ˜λŠ” λ‹€μŒμ˜ μ„±μ§ˆμ„ λ§Œμ‘±ν•œλ‹€.

  1. μ΄μΉœμˆ˜λŠ” 0으둜 μ‹œμž‘ν•˜μ§€ μ•ŠλŠ”λ‹€.
  2. μ΄μΉœμˆ˜μ—μ„œλŠ” 1이 두 번 μ—°μ†μœΌλ‘œ λ‚˜νƒ€λ‚˜μ§€ μ•ŠλŠ”λ‹€. 즉, 11을 λΆ€λΆ„ λ¬Έμžμ—΄λ‘œ κ°–μ§€ μ•ŠλŠ”λ‹€.

예λ₯Ό λ“€λ©΄ 1, 10, 100, 101, 1000, 1001 등이 μ΄μΉœμˆ˜κ°€ λœλ‹€. ν•˜μ§€λ§Œ 0010101μ΄λ‚˜ 101101은 각각 1, 2번 κ·œμΉ™μ— μœ„λ°°λ˜λ―€λ‘œ μ΄μΉœμˆ˜κ°€ μ•„λ‹ˆλ‹€.

N(1 ≤ N ≤ 90)이 μ£Όμ–΄μ‘Œμ„ λ•Œ, N자리 이친수의 개수λ₯Ό κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

 

μž…λ ₯

첫째 쀄에 N이 μ£Όμ–΄μ§„λ‹€.

 

좜λ ₯

첫째 쀄에 N자리 이친수의 개수λ₯Ό 좜λ ₯ν•œλ‹€.

 

예제 μž…λ ₯1

3

 

예제 좜λ ₯1

2

 

생각

n = 1

n = 2

10 

n = 3

100    101

n = 4

1000    1001    1010       

n = 5

10000    10001    10010    10100    10101   

n = 6

100000    100001    100010    100100    101000    100101    101001    101010   

n = 7

1000000    1000001    1000010    1000100    1001000    1001001    1010000

1000101    1001010    1001001    1010100    1010010    1010001    1010101

 

p[n] = p[n-1] + p[n-2] 으둜 식을 μ„ΈμšΈ 수 μžˆλ‹€.

 

 

μ²˜μŒμ— λ²”μœ„λ₯Ό μƒκ°ν•˜μ§€ λͺ»ν•˜κ³  int ν˜• λ°°μ—΄λ‘œ 두고 μ œμΆœν–ˆλ”λ‹ˆ μ‹€νŒ¨ν–ˆμ—ˆλ‹€. 문제λ₯Ό ν’€λ‹€λ³΄λ‹ˆ 01타일 λ¬Έμ œκ°€ 생각이 났닀.

 

β€» ν”Όλ³΄λ‚˜μΉ˜ 수 κ΅¬ν•˜λŠ” 곡식과도 같은데, ν”Όλ³΄λ‚˜μΉ˜ 수의 경우 46번째 μˆ˜κ°€ 2971215073 이 λ˜μ–΄ int 의 λ²”μœ„λ₯Ό μ΄ˆκ³Όν•œλ‹€. 

κ·Έλž˜μ„œ 01타일 문제 2020/02/12 - [μ•Œκ³ λ¦¬μ¦˜/λ¬Έμ œν’€μ΄] - [λ°±μ€€] λ™μ κ³„νšλ²• - 1904. 01타일 μ—μ„œλ„ intν˜• λ²”μœ„λ₯Ό λ„˜μ–΄κ°€κΈ° λ•Œλ¬Έμ— %15746 을 ν•΄μ€˜μ„œ λ²”μœ„λ₯Ό μ΄ˆκ³Όν•˜μ§€ μ•Šκ²Œ ν•΄μ£ΌλŠ” κ²ƒμ΄μ—ˆλ‹€. 

μ—¬κΈ°μ„œλŠ” long long int 둜 int μ΄μƒμ˜ μžλ£Œν˜•μ„ μ‚¬μš©ν•΄μ•Όν•œλ‹€. 

 

 

 

μž‘μ„±ν•œ μ½”λ“œ

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
 
using namespace std;
 
int n;
long long int d[91];
 
int main(int argc, const char * argv[]) {
    // insert code here...
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
 
    cin >> n;
    d[1= 1;
    d[2= 1;
    
    for(int i=3; i<=n; i++){
        d[i] = d[i-1+ d[i-2];
    }
 
    cout << d[n] << "\n";
    
    return 0;
}
 
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
λ°˜μ‘ν˜•