-
[Java] BOJ 16198 에너지 모으기개발자 취업/코딩테스트 준비 2023. 6. 7. 21:52반응형
16198번: 에너지 모으기
N개의 에너지 구슬이 일렬로 놓여져 있고, 에너지 구슬을 이용해서 에너지를 모으려고 한다. i번째 에너지 구슬의 무게는 Wi이고, 에너지를 모으는 방법은 다음과 같으며, 반복해서 사용할 수 있
www.acmicpc.net
정답 코드
- 완전 탐색으로 모든 조건 탐색
- x번째 에너지 구슬 제거 후 앞 뒤 값을 곱한 값을 계속해서 더 함
- 위 값에서 최고 값이 정답
import java.io.*; import java.util.*; public class Main { static BufferedReader br; static BufferedWriter bw; static StringTokenizer st; static int N, max; public static void main(String[] args) throws IOException { br = new BufferedReader(new InputStreamReader(System.in)); bw = new BufferedWriter(new OutputStreamWriter(System.out)); N = Integer.parseInt(br.readLine()); st = new StringTokenizer(br.readLine(), " "); List<Integer> list = new LinkedList<>(); for (int i = 0; i < N; i++) { list.add(Integer.parseInt(st.nextToken())); } List<Integer> copy = List.copyOf(list); fun(copy, 0); System.out.println(max); } private static void fun(List<Integer> origin, int sum) { if (origin.size() == 2) { max = Math.max(max, sum); return; } List<Integer> copy = copyList(origin); for (int i = 1; i < origin.size() - 1; i++) { int tmp = origin.get(i); int value = origin.get(i - 1) * origin.get(i + 1); copy.remove(i); fun(copy, sum + value); copy.add(i, tmp); } } private static List<Integer> copyList(List<Integer> origin) { List<Integer> copy = new LinkedList<>(); for (int i : origin) { copy.add(i); } return copy; } }
'개발자 취업 > 코딩테스트 준비' 카테고리의 다른 글
[Java] BOJ 11652 카드 (0) 2023.06.09 [Java] BOJ 1205 등수 구하기 (0) 2023.06.08 [Java] BOJ 1476 날짜 계산 (0) 2023.06.07 [Java] BOJ 10610 30 (0) 2023.06.06 [Java] BOJ 1748 수 이어 쓰기 1 (0) 2023.06.06