문제링크 :https://www.acmicpc.net/problem/14226

 

14226번: 이모티콘

영선이는 매우 기쁘기 때문에, 효빈이에게 스마일 이모티콘을 S개 보내려고 한다. 영선이는 이미 화면에 이모티콘 1개를 입력했다. 이제, 다음과 같은 3가지 연산만 사용해서 이모티콘을 S개 만��

www.acmicpc.net

 문제설명 

 

1. 현재 화면에는 이모티콘 1개가 있다.

2. 주어진 3가지 연산을 이용하여 N개의 이모티콘을 만들려고 하는데 ,

3. 이모티콘을 만들기 위한 최소 연산 횟수를 출력 하시오. 

 

 알고리즘 

 

1. 재귀 함수를 이용하여 3가지 연산을 수행 하고 최소값을 갱신 해주었다.

 

 코드 

 

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
33
34
35
36
37
38
39
40
41
42
43
44
45
 
#include<iostream>
#include<algorithm>
using namespace std;
 
int N;
 
int arr[2000];
 
void func(int n, int cnt, int copy) {
 
 
    //최솟값 갱신
    if (arr[n] > cnt || arr[n] == 0)
        arr[n] = cnt;
    else
        return;
 
    //1빼기
    if (n > 1 )
        func(n - 1, cnt + 1, copy);
 
 
    //붙여넣기
    if (n + copy < 2000 && copy > 0 )
        func(n + copy, cnt + 1, copy);
 
 
    //모두 복사해서 붙여넣기
    if (n + n < 2000 && n > 0 )
        func(n + n, cnt + 2, n);
 
}
 
 
 
int main() {
    cin >> N;
    arr[1= 1;
    func(221);
    cout << arr[N];
 
}
 
 
cs
ariz1623