반응형

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

 

11058번: 크리보드

N = 3인 경우에 A, A, A를 눌러 A 3개를 출력할 수 있다. N = 7인 경우에는 A, A, A, Ctrl-A, Ctrl-C, Ctrl-V, Ctrl-V를 눌러 9개를 출력할 수 있다. N = 11인 경우에는 A, A, A, Ctrl-A, Ctrl-C, Ctrl-V, Ctrl-V, Ctrl-A, Ctrl-C, Ctrl

www.acmicpc.net

 

 

[ 문제풀이 ]

 

1. arr[ N ] 배열을 선언하고, 1부터 6까지  arr[ i ] = i로 초기화해 줍니다.

 

2. 다음과 같은 점화식을 세워 값을 갱신합니다.

arr[ i ] = max( arr[ i - 3 ] * 2, arr[ i - 4 ] * 3, arr[ i - 5 ] * 4 )

 

3. arr[ N ]을 출력합니다.

 

[ 소스코드 ]

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
28
29
30
31
32
#include<iostream>
#define ll long long
 
using namespace std;
 
ll arr[101];
int N;
 
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
 
    cin >> N;
 
    if (N <= 6) {
        cout << N;
        return 0;
    }
 
    for (int i = 1; i <= 6; i++) {
        arr[i] = i;
    }
 
    for (int i = 7; i <= N; i++) {
        arr[i] = max(arr[i - 4* 3, arr[i - 5* 4);
        arr[i] = max(arr[i], arr[i - 3* 2);
    }
 
    cout << arr[N];
}
cs
반응형

+ Recent posts