삐까냥의 파도타기

14889번) 스타트와 링크 본문

코딩/백준 알고리즘

14889번) 스타트와 링크

금손형아 2017. 10. 28. 22:36

문제 출처 : 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