diff --git "a/\352\271\200\352\260\200\353\271\210/week14/260312_\354\210\253\354\236\220\354\225\274\352\265\254.java" "b/\352\271\200\352\260\200\353\271\210/week14/260312_\354\210\253\354\236\220\354\225\274\352\265\254.java" new file mode 100644 index 0000000..2acdc32 --- /dev/null +++ "b/\352\271\200\352\260\200\353\271\210/week14/260312_\354\210\253\354\236\220\354\225\274\352\265\254.java" @@ -0,0 +1,65 @@ +import java.util.*; +import java.io.*; + +class Main{ + static int result, N; + static boolean[] visited; + public static void main(String[] args) throws IOException{ + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st; + List list = new ArrayList<>(); + visited = new boolean[10]; + result=0; + + N = Integer.parseInt(br.readLine().trim()); + + for(int i=0; i list, StringBuilder sb, int idx){ + if(sb.length() == 3) { + int cnt = 0; + for(int i=0; i 0) { + //이겼을 때 최적화 답 구하기 위함 + if(diff > maxDiff) { + maxDiff = diff; + best = lion.clone(); //배열복사 + } else if (diff == maxDiff){ //같은 경우 낮은 점수 많은 순 + int lionMinTotal = 0, bestMinTotal = 0; + for(int i=10; i>=0; i--){ + lionMinTotal += (i*lion[10-i]); + bestMinTotal += (i*best[10-i]); + } + if(lionMinTotal < bestMinTotal) best = lion.clone(); + } + } + + lion[10] -= arrowLeft; //백트래킹 + return; + } + + //라이언은 이기려면 어피치보다 1점만 높으면 됨. + int need = info[idx]+1; + if(arrowLeft >= need) { + lion[idx] = need; + dfs(arrowLeft-need, idx+1, info, lion); + lion[idx] = 0; //백트래킹 복구 + } + + //점수 포기하는 경우 + dfs(arrowLeft, idx+1, info, lion); + + return; + } + +} \ No newline at end of file