Tags
- ์๋ฎฌ๋ ์ด์
- Brute Force Algorithm
- ์ํ
- BFS
- dfs
- ๋ฌธ์์ด
- ๊ทธ๋ํ ์ด๋ก
- Java
- Dynamic Programming
- stack
- ์ ์๋ก
- DP
- ๊ตฌํ
- ๊ทธ๋ํ ํ์
- Python
- PGM
- Study
- ์๋ฃ๊ตฌ์กฐ
- LV2
- ๊น์ด ์ฐ์ ํ์
- SpringBoot
- sort
- ๋๋น ์ฐ์ ํ์
- greedy
- queue
- ๋ฐฑํธ๋ํน
- ๊ต์ฌ
- ์ ๋ ฌ
- BOJ
- CodingTest
Archives
๊ธฐ๋ก๋ฐฉ
BOJ_14889 : ์คํํธ์ ๋งํฌ ๋ณธ๋ฌธ
๐ธ ๋ฌธ์ ๋ถ์ ๐ธ
- N๋ช ์ค์์ N/2๋ช ์ ๋ฝ์์๋ ๋์ค๋ ์๋์ง ์ฐจ์ด์ ์ต์๊ฐ์ ์ถ๋ ฅํ๋ค.
- N๋ช
์์ N/2๋ฅผ ๋ฝ๋ ์กฐํฉ ๋ฌธ์ ์ด๋ค.
- ๋ฐ๋ ํ์ผ๋ก ๋ฝํ๋ฉด ๊ฐ์ ๊ฐ์ ์ค๋ณต์ผ๋ก ๊ฒ์ฌํ๊ฒ ๋์ง๋ง, ์๊ฐ๋ณต์ก๋๊ฐ ํ์ฉ๋ฒ์ ๋ด์ด๋ฏ๋ก ๊ฐ์ํด๋ ๋๋ค.
- ์กฐํฉ์ผ๋ก ๋ฝ์ ์๋์ง ์ฐจ์ด์ ์ต์๊ฐ์ ์ ๋ฐ์ดํธํ๋ค.
๐ธ ์ฝ๋ ๐ธ
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
private static int N, ans = Integer.MAX_VALUE;
private static int[][] arr;
private static boolean[] visited;
public static void main(String[] args) throws IOException {
// Input
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
arr = new int[N][N];
visited = new boolean[N];
StringTokenizer st = null;
for (int i = 0; i < N; i++) {
st = new StringTokenizer(br.readLine());
for (int j = 0; j < N; j++) {
arr[i][j] = Integer.parseInt(st.nextToken());
}
}
// Combination
comb(0, 0, 0);
// Output
System.out.println(ans);
}
private static boolean comb(int start, int cnt, int sum) {
if (cnt == N / 2) {
int temp = 0;
for (int i = 0; i < N-1; i++) {
for (int j = i+1; j < N; j++) {
if (!visited[i] && !visited[j])
temp += arr[i][j] + arr[j][i];
}
}
ans = Math.min(ans, Math.abs(sum - temp));
return ans == 0;
}
for (int i = start; i < N; i++) {
if (!visited[i]) {
visited[i] = true;
int temp = 0;
for (int j = 0; j < i; j++) {
if (visited[j])
temp += arr[i][j] + arr[j][i];
}
if(comb(i + 1, cnt + 1, sum + temp)) return true;
visited[i] = false;
}
}
return false;
}
}
๐ธ ์ฝ๋ ํด์ ๐ธ
- ์ฌ๊ท ๋ฉ์๋ comb๋ฅผ ์ด์ฉํด ์กฐํฉ์ ๊ตฌํํ๋ค.
- ํ์์ ๊ณ ๋ฅผ ๋ ๋ง๋ค ์๋์ง ๊ฐ์ ๋์ ํด์ ์ฌ์ฉํ๋ค.
- ํ์์ ๋ค ๊ณจ๋์ผ๋ฉด ๋ฐ๋์ชฝ ํ์๋ค์ ์๋์ง ๊ฐ ์ดํฉ๋ ๊ณ์ฐํ๋ค.
- ์๋์ง ๊ฐ ์ฐจ์ด๋ฅผ ans์ ์ ๋ฐ์ดํธํ๋ค.
- ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ํ์ธํ๊ณ ans๋ฅผ ์ถ๋ ฅํ๋ค.
๐ธ end ๐ธ
- ์๊ฐ ์ด๊ณผ๊ฐ ๋ ์ ๊ณ์ฐ๊ฐ์ ์ฌ๊ท ๋ฉ์๋์์ sum์ผ๋ก ๋ค๊ณ ๋ค๋ ๋๋ฐ, ์ฌ์ค ํ์ง ์์๋ ๋๊ณ ๋ค๋ฅธ ๋ถ๋ถ์์ ๊ตฌํ ์ค์๊ฐ ์์๋ ๊ฒ ๊ฐ๋ค.
728x90
'CodingTest > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ_16928 : ๋ฑ๊ณผ ์ฌ๋ค๋ฆฌ ๊ฒ์ (0) | 2023.04.07 |
---|---|
BOJ_17070 : ํ์ดํ ์ฎ๊ธฐ๊ธฐ 1 (0) | 2023.04.07 |
BOJ_17144 : ๋ฏธ์ธ๋จผ์ง ์๋ ! (0) | 2023.04.07 |
BOJ_1068 : ํธ๋ฆฌ (0) | 2023.04.07 |
BOJ_13460 : ๊ตฌ์ฌ ํ์ถ 2 (0) | 2023.04.07 |