๋ฌธ์ (์ถ์ฒ: 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๋ฅผ ์ถ๋ ฅํ๋ค.

'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 5582_๊ณตํต ๋ถ๋ถ ๋ฌธ์์ด (0) | 2023.12.14 |
---|---|
[Baekjoon] 20529_๊ฐ์ฅ ๊ฐ๊น์ด ์ธ ์ฌ๋์ ์ฌ๋ฆฌ์ ๊ฑฐ๋ฆฌ (0) | 2023.12.13 |
[Baekjoon] 1189_์ปด๋ฐฑํ (1) | 2023.12.11 |
[Baekjoon] 21937_์์ (1) | 2023.12.08 |
[Baekjoon] 1283_๋จ์ถํค ์ง์ (1) | 2023.12.07 |