BOJ::16198 에너지 모으기

시사점

이해(x)

설계, 손 코딩(x)

시간 복잡도

공간 복잡도

손 코딩 후 문제 리뷰(x)

구현(x)

함수 List

업데이트 되는 변수

실제 구현

#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
#define rep(i,a,b) for(int i=a;i<b;i++)
const int MAXN = 10;
using namespace std;
int n, ans;
int a[MAXN];
void backtrack(int sum, vector<int> LEFT){
    if (LEFT.size() == 2){
        ans = max(ans, sum);
        return;
    }
    vector<int> NEXT;
    rep(i, 1, LEFT.size() - 1){
        int psum = LEFT[i - 1] * LEFT[i + 1];
        NEXT.clear();
        rep(j, 0, i) NEXT.push_back(LEFT[j]);
		rep(j, i+1, LEFT.size()) NEXT.push_back(LEFT[j]);
        backtrack(sum + psum, NEXT);
    }
}
int main(){
    //freopen("readme.txt", "r", stdin);
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    vector<int> LEFT;
    cin >> n;
    rep(i, 0, n){
        cin >> a[i];
        LEFT.push_back(a[i]);
    }
    backtrack(0, LEFT);
    cout << ans << '\n';
    return 0;
}

구현 후 코드리뷰 + 예제 돌려보기(x)

디버깅(x)

좋은 코드

최적화