티스토리 뷰
728x90
문제
https://www.acmicpc.net/problem/14889
풀이 및 소스코드
조합을 통해 2팀으로 나눠준다.
n/2명의 사람을 한 팀으로 선택할 때, boolean 배열에 true로 표시된다.
n/2명의 사람을 다 뽑았다면 ( cnt == n/2 ), 능력치를 계산해준다.
능력치를 계산할 때는, (0,1) (0,2) (0,3) (0,4) (1,2) 이런식으로 차근차근 비교해가면서
둘다 true거나, 둘다 false 일 때를 찾아 각각 팀을 나눠 능력치를 계산해주면 된다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static int n;
static int[][] map;
static boolean[] select;
static int res = Integer.MAX_VALUE;
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
n = Integer.parseInt(br.readLine());
map = new int[n][n];
select = 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());
}
}
choose_team(0, 0);
System.out.println(res);
}
public static void choose_team(int cnt, int start) {
if(cnt == n/2) {
cal();
return;
}
for(int i=start;i<n;i++) {
select[i]=true;
choose_team(cnt+1, i+1);
select[i]=false;
}
}
public static void cal() {
int s = 0; // 선택된 한팀
int ns = 0; // 나머지 한팀
for(int i=0;i<n-1;i++) {
for(int j=i+1;j<n;j++) {
if(select[i]&&select[j]) {
// 선택된 한팀에 속한다면 s에
s += map[i][j];
s += map[j][i];
} else if(!select[i]&&!select[j]) {
// 나머지 한팀에 둘다 속한다면 ns에
ns += map[i][j];
ns += map[j][i];
}
}
}
res = Math.min(Math.abs(s-ns), res);
if(res == 0) {
System.out.println(res);
System.exit(0);
}
}
}
반응형
'Coding - Algo > Java' 카테고리의 다른 글
[백준] 13335번:트럭 (Java 자바) (0) | 2021.11.01 |
---|---|
[백준] 4963번:섬의 개수 (Java 자바) (0) | 2021.11.01 |
[백준] 21608번:상어 초등학교 (Java 자바) (0) | 2021.10.19 |
[백준] 18352번:특정 거리의 도시 찾기 (Java 자바) (0) | 2021.10.19 |
[백준] 5567번:결혼식 (Java 자바) (0) | 2021.10.19 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- yoloV3
- 프로그래머스 자바
- 백준파이썬
- 프로그래머스 더 맵게
- poker swea
- 메뉴리뉴얼 풀이
- 백준 dp 문제
- swea 타일링 자바
- 우분투
- swea 1240
- 삼성청년SW아카데미
- 1699 자바
- SSAFY
- 타일링 자바
- 3996 자바
- union-find
- 백준
- 백준 17144
- 파이썬 풀이
- 백준 풀이
- 프로그래머스
- ubuntu
- SWEA
- swea 1240 자바
- swea 4070 타일링
- 프로그래머스 파이썬
- 파이썬
- 1240 자바
- swea 타일링
- 더 맵게
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함