https://www.acmicpc.net/problem/14889
14889๋ฒ: ์คํํธ์ ๋งํฌ
์์ 2์ ๊ฒฝ์ฐ์ (1, 3, 6), (2, 4, 5)๋ก ํ์ ๋๋๋ฉด ๋๊ณ , ์์ 3์ ๊ฒฝ์ฐ์๋ (1, 2, 4, 5), (3, 6, 7, 8)๋ก ํ์ ๋๋๋ฉด ๋๋ค.
www.acmicpc.net
1. ๋ฌธ์
NxNํฌ๊ธฐ์ map์ ๋ฅ๋ ฅ์น ํฌ๊ธฐ๊ฐ ์ฐ์ฌ์๋ค. N๋ช ์ค N/2๋ช ์ผ๋ก ๊ฐ๊ฐ 2๊ฐ์ ํ์ ๋ง๋ค์์ ๋
๊ฐ ํ์ด ๊ฐ์ง๋ ๋ฅ๋ ฅ์น์ ์ฐจ์ด๊ฐ ์ต์๊ฐ ๋ ๋์ ์ต์๊ฐ์ ์ถ๋ ฅํ๋ค.
๋ฅ๋ ฅ์น๋ ๊ฐ ํ์ ํ์ ๋ฒํธ์ ๋ฐ๋ผ ๊ฒฐ์ ๋๋ค.
ํ์์ด 1, 2, 3์ผ ๊ฒฝ์ฐ
map[1][2] + map[2][1] + map[1][3] + map[3][1] + map[2][3] + map[3][2]
๊ฐ ๋ฅ๋ ฅ์น๊ฐ ๋๋ค.
2. ํ์ด
์กฐํฉ์ผ๋ก ํ์๋ค.
์กฐํฉ์ผ๋ก ํ1์ ๊ตฌ์ฑ์์ ์ ํ์๋ค. ์ด ๋ visited๋ฅผ ์ฌ์ฉํ์ฌ ํ1๋ก ์ง์ ๋ ๋ฒํธ๋ true๋ก ๋ฐฉ๋ฌธํ์ํ์๊ณ
comb๊ฐ ๋๋๋ฉด ๋ค์ false๋ก ์๋ณต์์ผ์ฃผ์๋ค.
ํ2๋ visited๊ฐ false์ธ ์ซ์๋ก ๊ตฌ์ฑํ์ฌ ๋ฅ๋ ฅ์น๋ฅผ ๊ตฌํ ํ
ํ1์ ๋ฅ๋ ฅ์น์ ํ2์ ๋ฅ๋ ฅ์น ์ฐจ์ด ์ ๋๊ฐ์ผ๋ก ๋งค๋ฒ ์ต์๊ฐ์ ๊ฐฑ์ ํด์ฃผ์ด ๋ต์ ๊ตฌํ์๋ค.
3. ์ฝ๋
import java.io.*;
import java.util.*;
public class Main {
static int N, map[][], ans, tgt[], tgt2[];
static boolean visited[];
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = null;
N = Integer.parseInt(br.readLine());
map = new int[N][N];
tgt = new int[N/2];
visited = new boolean[N];
for (int i=0; i<N; i++) {
st = new StringTokenizer(br.readLine());
for (int j=0; j<N; j++) {
map[i][j] = Integer.parseInt(st.nextToken());
}
}
// ์
๋ ฅ ๋
ans = Integer.MAX_VALUE;
comb(0, 0);
System.out.println(ans);
}
static void comb(int tgtIdx, int start) {
if (tgtIdx == N/2) {
check();
return;
}
for (int i=start; i<N; i++) {
tgt[tgtIdx] = i;
visited[i] = true;
comb(tgtIdx+1, i+1);
visited[i] = false;
}
}
static void check() {
int sum = 0;
for (int i=0; i<N/2; i++) {
for (int j=0; j<N/2; j++) {
if (i==j) continue;
int y = tgt[i];
int x = tgt[j];
sum += map[y][x];
}
}
tgt2 = new int[N/2];
int idx = 0;
for (int i=0; i<N; i++) {
if (visited[i]) continue;
tgt2[idx] = i;
idx++;
}
int sum2 = 0;
for (int i=0; i<N/2; i++) {
for (int j=0; j<N/2; j++) {
if (i==j) continue;
int y = tgt2[i];
int x = tgt2[j];
sum2 += map[y][x];
}
}
int res = Math.abs(sum - sum2);
ans = Math.min(ans, res);
}
}
4. ์ฌ๋ด
์กฐํฉ ๋ฌธ์ ๋ ๋ญ๊ฐ ๊ฒ์๊ฐ๋ค.
'Algorithm > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ] 14890 ๊ฒฝ์ฌ๋ก - Java (1) | 2023.10.24 |
---|---|
[BOJ] 14888 ์ฐ์ฐ์ ๋ผ์๋ฃ๊ธฐ - Java (0) | 2023.10.19 |
[BOJ] 14500 ํ ํธ๋ก๋ฏธ๋ ธ - Java (1) | 2023.10.18 |
[BOJ] 14499 ์ฃผ์ฌ์ ๊ตด๋ฆฌ๊ธฐ - Java (1) | 2023.10.17 |
[BOJ] 21610 ๋ง๋ฒ์ฌ ์์ด์ ๋น๋ฐ๋ผ๊ธฐ - Java (0) | 2023.10.14 |