diff --git "a/2022/Oct/week_1/leetCode_3sum_\352\262\275\355\230\234\354\225\210.java" "b/2022/Oct/week_1/leetCode_3sum_\352\262\275\355\230\234\354\225\210.java" new file mode 100644 index 0000000..007fdd2 --- /dev/null +++ "b/2022/Oct/week_1/leetCode_3sum_\352\262\275\355\230\234\354\225\210.java" @@ -0,0 +1,46 @@ +package Oct; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class leetCode_3sum_경혜안 { + + public static void main(String[] args) { + int[] nums = {-1,0,1,2,-1,-4}; + + List> ans = new ArrayList>(); + + Arrays.sort(nums); + int len = nums.length; + for (int i = 0; i < len - 2; i++) { + if(i > 0 && nums[i] == nums[i-1]) continue; + + int start = i + 1; + int end = len - 1; + + while (start < end) { + int sum = nums[i] + nums[start] + nums[end]; + + if(sum == 0) { + ans.add(Arrays.asList(nums[i], nums[start], nums[end])); + start++; + end--; + + while(nums[start] == nums[start-1] && start < end) start++; + while(nums[end] == nums[end+1] && start < end) end--; + } else if (sum > 0) { + end--; + } else { + start++; + } + + } + } + + + } + + + +} diff --git "a/2022/Oct/week_1/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244_lv2_\355\233\204\353\263\264\355\202\244_\352\262\275\355\230\234\354\225\210.java" "b/2022/Oct/week_1/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244_lv2_\355\233\204\353\263\264\355\202\244_\352\262\275\355\230\234\354\225\210.java" new file mode 100644 index 0000000..8942d85 --- /dev/null +++ "b/2022/Oct/week_1/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244_lv2_\355\233\204\353\263\264\355\202\244_\352\262\275\355\230\234\354\225\210.java" @@ -0,0 +1,79 @@ +package Oct; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.Set; + +public class 프로그래머스_lv2_후보키_경혜안 { + static ArrayList answer; + static String[][] rel; + public static void main(String[] args) { + + String[][] relation = {{"100","ryan","music","2"},{"200","apeach","math","2"},{"300","tube","computer","3"},{"400","con","computer","4"},{"500","muzi","music","3"},{"600","apeach","music","2"}}; + rel = relation; + answer = new ArrayList(); + + int[] arr = new int[relation[0].length]; + + for (int i = 0; i < relation[0].length; i++) arr[i] = i; + + for (int i = 1; i <= relation[0].length; i++) { + Comb(arr, new boolean[relation[0].length], 0, i); + } + + System.out.println(answer.size()); + + } + + static void Comb(int[] arr, boolean[] visited, int start, int d ) { + + if( d == 0) { + StringBuilder sb = new StringBuilder(); + + for (int i = 0; i < visited.length; i++) { + if(visited[i]) sb.append("1"); else sb.append("0"); + + } + + int temp = Integer.parseInt(sb.toString(), 2); + for (String a : answer) { + if((temp & Integer.parseInt(a)) == Integer.parseInt(a)) { + return; + } + } + + if(isPk(visited)) { + answer.add(Integer.toString(temp)); + } + + + + } + else { + for (int i = start; i < visited.length; i++) { + visited[i] = true; + Comb(arr, visited, i+1, d-1); + visited[i] = false; + } + } + } + + static boolean isPk(boolean[] visited) { + Set list = new HashSet(); + + for (int i = 0; i < rel.length; i++) { + StringBuilder sb = new StringBuilder(); + for (int j = 0; j < visited.length; j++) { + if(visited[j]) { + sb.append(rel[i][j]); + } + } + list.add(sb.toString()); + } + + if(list.size() == rel.length) return true; + return false; + } + + +}