https://www.acmicpc.net/problem/16198
list 의 remove와 add를 이용해서 품
remove 를 통해서 해당 인덱스의 값을 빼고
나중에 다음 depth 를 재귀타고 온 후에 다시 해당 인덱스로 add 하는 식으로 해서 풀어봄
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
public class Main {
private static List<Integer> list = new ArrayList<>();
private static int ans = 0;
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
st = new StringTokenizer(br.readLine());
while (st.hasMoreTokens()) {
list.add(Integer.parseInt(st.nextToken()));
}
solve(0);
System.out.println(ans);
}
private static void solve(int sum){
if (ans < sum) {
ans = sum;
}
for (int i = 1; i < list.size() - 1; i++) {
int removeVal = list.get(i);
int tmpSum = list.get(i - 1)*list.get(i + 1);
list.remove(i);
solve(sum + tmpSum);
list.add(i, removeVal);
}
}
}