Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 46 additions & 0 deletions 2022/Oct/week_1/leetCode_3sum_경혜안.java
Original file line number Diff line number Diff line change
@@ -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<List<Integer>> ans = new ArrayList<List<Integer>>();

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++;
}

}
}


}



}
79 changes: 79 additions & 0 deletions 2022/Oct/week_1/프로그래머스_lv2_후보키_경혜안.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
package Oct;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;

public class 프로그래머스_lv2_후보키_경혜안 {
static ArrayList<String> 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<String>();

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<String> list = new HashSet<String>();

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;
}


}