-
백준 1463번: 1로 만들기다이나믹프로그래밍(DP) 2018. 8. 9. 13:29반응형
https://www.acmicpc.net/problem/1463
1. 문제
2. 알고리즘
키워드 - 다이나믹프로그래밍, 메모제이션
3. 코드
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364#include <iostream>#include <sstream>#include <string>#include <algorithm>#include <functional>#include <vector>#include <list>#include <queue>#include <deque>#include <map>#include <set>#include <stack>#include <math.h>#include <memory.h>using namespace std;#define MAX_SIZE 100#define INF 0x7fffffff#define CENDL "\n"#define ll long long#define c_reverse(s) reverse(s.begin(), s.end())#define c_sort(s) sort(s.begin(), s.end())#define print_vector(v) for(int i=0; i<v.size(); i++) cout << v[i];int dp[1000001];int rec(int n) {if(n == 1) {return 0;}int& cand = dp[n];if (cand != -1) {return cand;}cand = INF;if(n % 3 == 0) {cand = min(cand, rec(n/3) + 1);}if(n % 2 == 0) {cand = min(cand, rec(n/2) + 1);}cand = min(cand, rec(n-1) + 1);return cand;}int main() {cin.tie(0);std::ios::sync_with_stdio(false);int n = 0; cin >> n;memset(dp,-1,sizeof(dp));cout << rec(n);return 0;}cs 반응형'다이나믹프로그래밍(DP)' 카테고리의 다른 글
백준 2916번: 자와 각도기 (0) 2018.10.21 백준 14501번 : 퇴사 (0) 2018.08.12 백준 1309번: 동물원 (0) 2018.08.04 백준 11055 번: 가장 큰 증가 부분 수열 (0) 2018.08.02 백준 1912번: 연속합 (0) 2018.07.03