https://www.acmicpc.net/problem/14889
Math.abs(a)
절댓값 구하는 메소드
Math.min(a,b)
최솟값 구하는 메소드
dfs
dfs로 팀구성
diff
점수차 계산 메소드
import java.util.*;
public class No14889 {
static int N;
static int[][] arr;
static int min = Integer.MAX_VALUE;
static boolean[] check;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
arr = new int[N + 1][N + 1];
check = new boolean[N + 1];
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
arr[i][j] = sc.nextInt();
}
}
dfs(1,0);
System.out.println(min);
}
static void dfs (int idx, int depth){
if (depth == N / 2) {
min = Math.min(min, diff());
return;
}
for(int i = idx; i < N+1; i++){
if (check[i])
continue;
check[i] = true;
dfs(i+1, depth+1);
check[i] = false;
}
}
//점수 차 계산하는 메소드
static int diff(){
int start = 0;
int link = 0;
for (int i = 0; i < N; i++){
for (int j = i+1; j < N; j++){
if(check[i] && check[j]){
start += arr[i][j]+arr[j][i];
}
else if(check[i] == false && check[j] == false){
link += arr[i][j]+arr[j][i];
}
}
}
return Math.abs(start - link);
}
}
예제를 넣으면 맞게 나오는데 백준에서는 실패로 뜬다.
'코딩테스트' 카테고리의 다른 글
[DFS,BFS] 백준 1260번 DFS와 BFS (0) | 2022.11.07 |
---|---|
[완전탐색] 프로그래머스 모의고사 (0) | 2022.11.06 |
[완전탐색] 백준 2503번 숫자야구 (0) | 2022.10.06 |
[완전탐색] 백준 2231번 분해합 (0) | 2022.10.06 |
[그리디] 프로그래머스 체육복 (0) | 2022.10.04 |
댓글