티스토리 뷰

Algorithm

[백준] S1 16198 에너지 모으기 (java)

코딩브론즈 2021. 1. 3. 14:18

www.acmicpc.net/problem/16198

 

16198번: 에너지 모으기

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

www.acmicpc.net

 

풀이

 

1) 리스트에 다 담음

2) dfs를 돌림 파라미터는 list, sum

2-1) 탈출 조건은 list의 사이즈가 2이하 일 경우. max값 갱신 후 return

2-2) 1부터 size-1 까지 list.get(i)를 빼고 앞, 뒤를 곱한값을 다음 dfs에 넘김

2-3) dfs가 끝나면 빼낸 정보를 다시 넣음

 

주의사항

 

1) 합이 아니라 곱이다. <- 15분 날렸다...

 

package com.baekJoon;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;

public class BJ_S1_16198_에너지모으기 {
	static BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
	static StringTokenizer tokens;
	static int N, max = Integer.MIN_VALUE;
//	static List<Integer> list = new ArrayList<>();
	
	public static void main(String[] args) throws NumberFormatException, IOException {
		input = new BufferedReader(new StringReader(src));
		N = Integer.parseInt(input.readLine());
		List<Integer> list = new ArrayList<>();
		tokens = new StringTokenizer(input.readLine());
		for(int n=0; n<N; n++) {
			list.add(Integer.parseInt(tokens.nextToken()));
		}
		dfs(list,0);
		System.out.println(max);
	}

	private static void dfs(List<Integer> list, int sum) {
		if(list.size()<=2) {
			if(max < sum) {
				max = sum;
			}
			return;
		}
		
		for(int i=1; i<list.size()-1; i++) {
			int temp = list.get(i);
			int num = list.get(i-1) * list.get(i+1);
			list.remove(i);
			dfs(list, sum + num);
			list.add(i, temp);
		}
	}

	static String src =
			"7\r\n" + 
			"2 2 7 6 90 5 9";
}

 

 

후기

 

또또 문제를 제대로 안읽었다. 아니 읽을때는 알고 있었는데 풀다보니 머릿속에서 곱->합 으로 바꼈다.

문제를 제대로 읽자. 제발.

이 문제에서 배울점은 list.remove와 list.add(index, value) 이다.

평소에는 값만 추가했는데 원하는 인덱스에 값을 추가, 삭제 하는 방법이라서 약간 생소했다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함