[[TableOfContents]] = ì˜¤ëŠ˜ì˜ ë¬¸ì œ = * [https://www.acmicpc.net/problem/1003|피보나치 함수] * [https://www.acmicpc.net/problem/1149|RGB거리] * [https://www.acmicpc.net/problem/1912|ì—°ì†í•©] = ì°¸ê°€ìž = * 15ì´ì›ì¤€ = 코드 = == 15ì´ì›ì¤€ == === 피보나치 함수 === {{{ #include<iostream> #include<utility> using namespace std; int arr[41][2] = { 0, }; pair<int,int> search(int num){ if(arr[num][0] + arr[num][1]){ return make_pair(arr[num][0], arr[num][1]); } pair<int,int> tmp1 = search(num-1); pair<int,int> tmp2 = search(num-2); arr[num][0] = tmp1.first + tmp2.first; arr[num][1] = tmp1.second + tmp2.second; return make_pair(arr[num][0], arr[num][1]); } int main(){ arr[0][0] = arr[1][1] = 1; int T; cin>>T; while(T--){ int n; cin>> n; search(n); printf("%d %d\n", arr[n][0],arr[n][1]); } } }}} === RGB 거리 === {{{ #include<iostream> #include<algorithm> using namespace std; int arr[1001][3] = {0,}; int w[1001][3] = {0,}; int main(){ int n; cin>>n; for(int i = 0; i<n; i++){ for(int j = 0; j<3; j++){ scanf("%d", &w[i][j]); } } arr[0][0] = w[0][0]; arr[0][1] = w[0][1]; arr[0][2] = w[0][2]; for(int i = 1; i<n; i++){ arr[i][0] = min(arr[i-1][1] + w[i][0], arr[i-1][2] + w[i][0]); arr[i][1] = min(arr[i-1][0] + w[i][1], arr[i-1][2] + w[i][1]); arr[i][2] = min(arr[i-1][0] + w[i][2], arr[i-1][1] + w[i][2]); } int tmp = min(arr[n-1][0],arr[n-1][1]); tmp = min(tmp,arr[n-1][2]); cout<<tmp<<endl; } }}} === ì—°ì†í•© === {{{ #include<iostream> #include<algorithm> #include<vector> using namespace std; int arr[100001]; int main(){ int n, ans; cin>> n; for(int i =0; i<n; i++){ int tmp; scanf("%d", &arr[i]); } ans = arr[0]; for(int i = 0; i<n;){ int sum = arr[i]; ans = max(ans, sum); int j; for(j = i+1; j<n; j++){ if(sum < 0){ sum = max(ans, sum); i = j; break; } sum += arr[j]; ans = max(ans, sum); } i = j; } cout<<ans<<endl; } }}} = ì•„ì´ë””ì–´ = == 15ì´ì›ì¤€ == === 피보나치 함수 === * ê²°êµ ê° ìˆ˜ì— ëŒ€í•œ 0ê³¼ 1ì´ ë‚˜íƒ€ëŠ” 수를 피보나치와 ê°™ì´ ë”해주면 ëœë‹¤. === RGB 거리, ì—°ì†í•© === * ìƒëžµ