문제링크 :https://www.acmicpc.net/problem/14226
문제설명
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(2, 2, 1); cout << arr[N]; } | cs |
'c++ > 백준' 카테고리의 다른 글
백준 16922번 : 로마 숫자 만들기 (0) | 2020.06.03 |
---|---|
백준 16928번 : 뱀과 사다리 게임 (0) | 2020.06.03 |
백준 1713번: 후보 추천하기 (0) | 2020.05.27 |
백준 10815번 : 숫자 카드 (0) | 2020.05.27 |
백준 1022번: 소용돌이 예쁘게 출력하기 (0) | 2020.05.27 |