๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 16198_์—๋„ˆ์ง€ ๋ชจ์œผ๊ธฐ

๋ฟŒ์•ผ._. 2023. 12. 12. 15:02

Silver I

๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/16198)

< ์—๋„ˆ์ง€ ๋ชจ์œผ๊ธฐ >

 

๋ฌธ์ œ ํ’€์ด 

 

์—๋„ˆ์ง€๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๊ฒฝ์šฐ๋ฅผ ๋‹ค ๊ตฌํ•˜์—ฌ ์—๋„ˆ์ง€์˜ ์ตœ๋Œ“๊ฐ’์„ ๊ตฌํ•œ๋‹ค.

 

 

 my solution (Java)

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

public class _16198_ { // ์—๋„ˆ์ง€ ๋ชจ์œผ๊ธฐ
	static int arr[], result;
	static boolean visited[];

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;

		int n = Integer.parseInt(bf.readLine());

		arr = new int[n];
		visited = new boolean[n];
		result = 0;

		st = new StringTokenizer(bf.readLine());
		for (int i = 0; i < n; i++) {
			arr[i] = Integer.parseInt(st.nextToken());
		}

		getEnergy(0);

		System.out.println(result);
	}

	private static void getEnergy(int num) {
		int cnt = 0;
		for (int i = 1; i < arr.length - 1; i++) {
			if (!visited[i]) {
				visited[i] = true;
				int x=i, y=i;
				while(visited[x]) {
					x--;
				}
				while(visited[y]) {
					y++;
				}
				getEnergy(num + arr[x] * arr[y]);
				visited[i] = false;
			} else {
				cnt += 1;
			}
		}
		if (cnt == arr.length - 2) {
			if (result < num) {
				result = num;
			}
		}
	}
}
๋ณ€์ˆ˜)
n : ์—๋„ˆ์ง€ ๊ตฌ์Šฌ์˜ ๊ฐœ์ˆ˜
arr : ์—๋„ˆ์ง€ ๊ตฌ์Šฌ์˜ ๋ฌด๊ฒŒ ๋ฐฐ์—ด
result : ์—๋„ˆ์ง€์˜ ์ตœ๋Œ“๊ฐ’
visited : ๊ตฌ์Šฌ ์ œ๊ฑฐ ์—ฌ๋ถ€

 

์—๋„ˆ์ง€ ๊ตฌ์Šฌ์˜ ๊ฐœ์ˆ˜(n)์™€ ์—๋„ˆ์ง€ ๊ตฌ์Šฌ์˜ ๋ฌด๊ฒŒ๋ฅผ ๋ฐฐ์—ด์— ์ €์žฅํ•œ ํ›„ ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด getEnergy ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.

 

์ฒซ ๋ฒˆ์งธ์™€ ๋งˆ์ง€๋ง‰ ์—๋„ˆ์ง€ ๊ตฌ์Šฌ์€ ๊ณ ๋ฅผ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๋ฐ˜๋ณต๋ฌธ์„ 1๋ถ€ํ„ฐ ๋ฐฐ์—ด์˜ ๊ธธ์ด-1 ์ „๊นŒ์ง€๋กœ ์กฐ๊ฑด์„ ์„ค์ •ํ•œ๋‹ค. ์•„์ง ์ œ๊ฑฐ๋˜์ง€ ์•Š์€ ๊ตฌ์Šฌ์ด๋ผ๋ฉด ์ œ๊ฑฐํ•œ๋‹ค.  Wx-1, Wx+1์˜ ๊ตฌ์Šฌ์ด ์–ด๋””์ธ์ง€ ๊ตฌํ•ด์„œ ๊ณฑ์„ ๋”ํ•ด์ฃผ๋ฉฐ getEnergy ํ•จ์ˆ˜๋ฅผ ๋‹ค์‹œ ํ˜ธ์ถœํ•œ๋‹ค. ํ•จ์ˆ˜ ํ˜ธ์ถœ์ด ๋๋‚˜๋ฉด ๋‹ค์Œ ๊ฒฝ์šฐ๋ฅผ ์œ„ํ•ด ๊ตฌ์Šฌ ์ œ๊ฑฐ ํ‘œ์‹œ๋ฅผ ์—†์•ค๋‹ค. ๋งŒ์•ฝ ๋ชจ๋“  ๊ตฌ์Šฌ์„ ์ œ๊ฑฐํ–ˆ๋‹ค๋ฉด ์ตœ์ข… ์—๋„ˆ์ง€ ๊ฐ’์ด๋ฏ€๋กœ result์™€ ๊ฐ’์„ ๋น„๊ตํ•˜์—ฌ ์—๋„ˆ์ง€์˜ ์ตœ๋Œ“๊ฐ’์„ ๊ตฌํ•œ๋‹ค.  

 

์ตœ์ข… ์ •๋‹ต์ธ result๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.