Algorithm/baekjoon

에너지 모으기

마닐라 2022. 2. 24. 17:06

📍 문제 설명

https://www.acmicpc.net/problem/16198

 

16198번: 에너지 모으기

N개의 에너지 구슬이 일렬로 놓여져 있고, 에너지 구슬을 이용해서 에너지를 모으려고 한다. i번째 에너지 구슬의 무게는 Wi이고, 에너지를 모으는 방법은 다음과 같으며, 반복해서 사용할 수 있

www.acmicpc.net

 

💡 접근

첫번째와 마지막을 제외하고 재귀를 돌면 되는 문제

현재 리스트의 인덱스를 제거하고 확인해보고 난 뒤에 해당 인덱스에 그 값을 다시 넣어줘야 한다.

 

👩‍💻 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;

public class Main {
    static int n, m, v, e, k, r, x, s, answer, cnt;
    static int max = Integer.MIN_VALUE, min = Integer.MAX_VALUE;
    static int[] arr, dice;
    static long[] dp;
    static char[][] board;
    static boolean[][][][] visited;
    static int[] dx = {1,0,-1,0};
    static int[] dy = {0,-1,0,1};
    static ArrayList<Integer> list = new ArrayList<>();
    static StringBuilder sb;
    public static void main(String[] args) throws IOException {
        Main T = new Main();
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        StringTokenizer st = new StringTokenizer(br.readLine());
        n = Integer.parseInt(st.nextToken());

        arr = new int[n];

        st = new StringTokenizer(br.readLine());
        for(int i = 0; i < n; i++) {
            list.add(Integer.parseInt(st.nextToken()));
        }

        T.solution(0);
        System.out.println(max);
    }

    private void solution(int sum) {
        //합칠 에너지가 없으면 그만해
        if(list.size() <= 2) {
            max = Math.max(max, sum);
        }
        else {
            for(int i = 1; i < list.size()-1; i++) {
                int temp = list.get(i);
                int mul = list.get(i-1) * list.get(i+1);
                //현재 인덱스 제거
                list.remove(i);
                solution(sum + mul);
                //그 값 해당 인덱스에 다시 넣어주기
                list.add(i, temp);
            }
        }
    }
}

'Algorithm > baekjoon' 카테고리의 다른 글

부분수열의 합  (0) 2022.03.01
N-Queen  (0) 2022.02.27
두 동전  (0) 2022.02.23
컨베이어 벨트 위의 로봇  (0) 2022.02.23
드래곤커브  (0) 2022.02.21