[백준] 16198. 에너지 모으기

꿀이·2022년 6월 17일
0

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);
        }
    }

}
profile
내게 맞는 옷을 찾는중🔎

0개의 댓글