삐까냥의 파도타기
14889번) 스타트와 링크 본문
문제 출처 : https://www.acmicpc.net/problem/14889
기출 문제 입니다.
import java.util.ArrayList; import java.util.Collections; import java.util.Scanner; public class Main { static int[][] array; static int min = -1, num;
public static void main(String[] args) { Scanner sc = new Scanner(System.in); num = sc.nextInt(); array = new int[num][num]; for ( int i = 0; i < num; i++ ) { for ( int j = 0; j < num; j++ ) { array[i][j] = sc.nextInt(); } }
setResultList(1, 0, new ArrayList<Integer>());
System.out.println(min); }
static void setResultList(int now, int start, ArrayList<Integer> numList) {
for ( int i = start; i < num; i++ ) { if ( !numList.contains(i) ) { ArrayList<Integer> tempNumList = new ArrayList<Integer>(); tempNumList.addAll(numList); tempNumList.add(i); if ( now < num/2 ) { setResultList(now+1, i+1, tempNumList); } else if ( now == num/2 ) { setCal(tempNumList); } else { break; } } } }
static void setCal(ArrayList<Integer> numList) { ArrayList<Integer> orderNumList = new ArrayList<Integer>(); for ( int i = 0; i < num; i++ ) { if ( !numList.contains(i) ) { orderNumList.add(i); } }
int gap = getCal(numList) - getCal(orderNumList); if ( gap < 0 ) { gap *= -1; }
if ( min == -1 || min > gap ) { min = gap; } }
static int getCal(ArrayList<Integer> list) { int result = 0; for ( int i = 0; i < list.size(); i++ ) { for ( int j = i+1; j < list.size(); j++ ) { if ( i != j ) { result += array[list.get(i)][list.get(j)]; result += array[list.get(j)][list.get(i)]; } } } return result; } } |
더 다듬을 수 있을것 같은데,
지금은 바쁜 관계로~
'코딩 > 백준 알고리즘' 카테고리의 다른 글
1152번) 단어의 개수 (0) | 2017.11.11 |
---|---|
14890번) 경사로 (0) | 2017.10.29 |
1507번) 궁금한 민호 (0) | 2017.10.28 |
5567번) 결혼식 - 그래프 (0) | 2017.10.28 |
1068번) 트리 - 그래프 (0) | 2017.10.28 |