CodingTest/Java
BOJ_14889 : μ€ννΈμ λ§ν¬
Soom_1n
2023. 4. 7. 15:38
14889λ²: μ€ννΈμ λ§ν¬
μμ 2μ κ²½μ°μ (1, 3, 6), (2, 4, 5)λ‘ νμ λλλ©΄ λκ³ , μμ 3μ κ²½μ°μλ (1, 2, 4, 5), (3, 6, 7, 8)λ‘ νμ λλλ©΄ λλ€.
www.acmicpc.net
πΈ λ¬Έμ λΆμ πΈ
- 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