From 103d9974abf40a7b561c2f765f65db1c4d080f9b Mon Sep 17 00:00:00 2001 From: jiyeon-agnes-lee Date: Fri, 10 Jun 2022 21:41:20 +0900 Subject: [PATCH] 220610_solve : Programmers_lee --- ...\215\224\355\225\230\352\270\260_lee.java" | 42 ++++++++++++++ ...\247\204\354\260\215\352\270\260_lee.java" | 58 +++++++++++++++++++ 2 files changed, 100 insertions(+) create mode 100644 "0614/Programmers/Lv1/\353\221\220\352\260\234\353\275\221\354\225\204\354\204\234\353\215\224\355\225\230\352\270\260_lee.java" create mode 100644 "0614/Programmers/Lv2/\353\213\250\354\262\264\354\202\254\354\247\204\354\260\215\352\270\260_lee.java" diff --git "a/0614/Programmers/Lv1/\353\221\220\352\260\234\353\275\221\354\225\204\354\204\234\353\215\224\355\225\230\352\270\260_lee.java" "b/0614/Programmers/Lv1/\353\221\220\352\260\234\353\275\221\354\225\204\354\204\234\353\215\224\355\225\230\352\270\260_lee.java" new file mode 100644 index 0000000..3326840 --- /dev/null +++ "b/0614/Programmers/Lv1/\353\221\220\352\260\234\353\275\221\354\225\204\354\204\234\353\215\224\355\225\230\352\270\260_lee.java" @@ -0,0 +1,42 @@ +import java.util.HashSet; +import java.util.ArrayList; +import java.util.Arrays; +class Solution { + static HashSet list; + public int[] solution(int[] numbers) { + int len = numbers.length; + boolean[] selected = new boolean[len]; + list = new HashSet(); + comb(0, 0, len, numbers, selected); + ArrayList ans = new ArrayList<>(list); + int[] answer = new int[list.size()]; + for(int i = 0; i < list.size(); i++) + answer[i] = ans.get(i); + Arrays.sort(answer); + return answer; + } + // 조합 백트래킹 + public static void comb(int cnt, int idx, int len, int[] numbers, boolean[] selected) { + if(cnt == 2) { + int n = 0; + int sum = 0; + for(int j = 0 ; j < len; j++) { + if(n == 2) + break; + if(selected[j]){ + sum += numbers[j]; + n++; + } + } + list.add(sum); + return; + } + else { + for(int i = idx; i < len; i++) { + selected[i] = true; + comb(cnt+1, i+1, len, numbers, selected); + selected[i] = false; + } + } + } +} \ No newline at end of file diff --git "a/0614/Programmers/Lv2/\353\213\250\354\262\264\354\202\254\354\247\204\354\260\215\352\270\260_lee.java" "b/0614/Programmers/Lv2/\353\213\250\354\262\264\354\202\254\354\247\204\354\260\215\352\270\260_lee.java" new file mode 100644 index 0000000..b81c289 --- /dev/null +++ "b/0614/Programmers/Lv2/\353\213\250\354\262\264\354\202\254\354\247\204\354\260\215\352\270\260_lee.java" @@ -0,0 +1,58 @@ +class Solution { + static int answer; + public int solution(int n, String[] data) { + answer = 0; + String str = "ACFJMNRT"; + boolean[] visited = new boolean[8]; + perm(str, "", visited, 0, n, data); + return answer; + } + // 순열 + public static void perm(String str, String curr, boolean[] visited, int depth, int n, String[] data) { + if (curr.length() == 8) { + if(check(curr, n, data)) + answer++; + return; + } + if(depth == 8) + return; + for (int i = 0; i < 8; i++) { + if (visited[i] != true) { + visited[i] = true; + perm(str, curr + str.charAt(i), visited, depth + 1, n, data); + visited[i] = false; + } + } + } + // 조건 체크 + // n : 조건 data의 개수 + // 0 : 조건 제시 프렌즈 + // 1 : ~ + // 2 : 상대방 프렌즈 + // 3 : = < > 같음 미만 초과 + // 4 : 0~6 두 프렌즈 사이 다른 프렌즈 수 + public static boolean check(String c, int n, String[] data) { + for(int i = 0 ; i < n; i++) { + String condition = data[i]; + char f1 = condition.charAt(0); + char f2 = condition.charAt(2); + int dist = Math.abs(c.indexOf(f1) - c.indexOf(f2)); + int len = condition.charAt(4) - '0' +1; + switch(condition.charAt(3)) { + case '=': + if(dist != len) + return false; + break; + case '<': + if(dist >= len) + return false; + break; + case '>': + if(dist <= len) + return false; + break; + } + } + return true; + } +} \ No newline at end of file