diff --git a/Basic_Of_Algorithm/.classpath b/Basic_Of_Algorithm/.classpath new file mode 100644 index 0000000..51a8bba --- /dev/null +++ b/Basic_Of_Algorithm/.classpath @@ -0,0 +1,6 @@ + + + + + + diff --git a/Basic_Of_Algorithm/.gitignore b/Basic_Of_Algorithm/.gitignore new file mode 100644 index 0000000..ae3c172 --- /dev/null +++ b/Basic_Of_Algorithm/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/Basic_Of_Algorithm/.project b/Basic_Of_Algorithm/.project new file mode 100644 index 0000000..4c36376 --- /dev/null +++ b/Basic_Of_Algorithm/.project @@ -0,0 +1,17 @@ + + + Basic_Of_Algorithm + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/Basic_Of_Algorithm/.settings/org.eclipse.jdt.core.prefs b/Basic_Of_Algorithm/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..ec1937b --- /dev/null +++ b/Basic_Of_Algorithm/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,12 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.release=disabled +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/Basic_Of_Algorithm/src/Today22_05_11/bfs.java b/Basic_Of_Algorithm/src/Today22_05_11/bfs.java new file mode 100644 index 0000000..1d7af4b --- /dev/null +++ b/Basic_Of_Algorithm/src/Today22_05_11/bfs.java @@ -0,0 +1,76 @@ +package Today22_05_11; + +import java.util.LinkedList; +import java.util.Queue; + +public class bfs { + + + public static void main(String[] args) { + + int[][]maps = {{1,0,1,1,1},{1,0,1,0,1},{1,0,1,1,1},{1,1,1,0,1},{0,0,0,0,1}}; + + int answer = 0; + + int[][]temp = new int[maps.length][maps[0].length]; + + temp[0][0] = 1; + + long start = System.nanoTime(); + + bfs(maps,temp); + + answer = temp[maps.length-1][maps[0].length-1]; + + System.out.println(answer); + + long end = System.nanoTime(); + + System.out.println("걸린 시간 : " + (end-start)+" 나노초"); //10억분의 1초 반환 + + + } + + static void bfs(int[][]maps,int[][]temp) { + + Queue q = new LinkedList<>(); + + q.add(new int[] {0,0}); + + int []id = {1,0,-1,0}; + int []jd = {0,1,0,-1}; + + while(!q.isEmpty()) { + + int [] currentCount = q.poll(); + + int ci = currentCount[0]; + int cj = currentCount[1]; + + for(int d=0;d<4;d++) { + + int ni = ci+id[d]; + int nj = cj+jd[d]; + + if(ni<0||nj<0||maps.length-1q = new LinkedList<>(); + + q.offer(new int[] {start[0],start[1]}); + + int [] di = {1,0,-1,0}; + int [] dj = {0,1,0,-1}; + + outerLoop: + while(!q.isEmpty()) { + + int []cur = q.poll(); + + int ci = cur[0]; + int cj = cur[1]; + + for(int d=0;d<4;d++) { + int ni = ci + di[d]; + int nj = cj + dj[d]; + if(ni<0||nj<0||maps.length-1> infoMap = new HashMap<>(); + + public static void main(String[] args) { + + + String []info = {"java backend junior pizza 150","python frontend senior chicken 210","python frontend senior chicken 150","cpp backend senior pizza 260","java backend junior chicken 80","python backend senior chicken 50"}; + String [] query = {"java and backend and junior and pizza 100","python and frontend and senior and chicken 200","cpp and - and senior and pizza 250","- and backend and senior and - 150","- and - and - and chicken 100","- and - and - and - 150"}; + + int[]result = new int[query.length]; + + + for(int i=0;i list = infoMap.get(key); + + int start = 0; + int end = list.size()-1; + + while(start<=end) { + + int mid = (start+end)/2; + + if(score>list.get(mid)) start = mid+1; + else if(score<=list.get(mid)) end = mid-1; + + } + + + return list.size() - start; + + } + + static void dfs(String temp[],String now,int depth) { + + if(depth==4) { + if(!infoMap.containsKey(now)) { + infoMap.put(now, new ArrayList<>()); + } + infoMap.get(now).add(Integer.parseInt(temp[4])); + return; + } + + + dfs(temp,now+"-",depth+1); + dfs(temp,now+temp[depth],depth+1); + + + } + +} \ No newline at end of file diff --git a/Basic_Of_Algorithm/src/Today22_05_11/twoPointer.java b/Basic_Of_Algorithm/src/Today22_05_11/twoPointer.java new file mode 100644 index 0000000..202e7d6 --- /dev/null +++ b/Basic_Of_Algorithm/src/Today22_05_11/twoPointer.java @@ -0,0 +1,76 @@ +package Today22_05_11; + +import java.util.Arrays; + +public class twoPointer { + + + public static void main(String[] args) { + + + int []arr = {1,2,2,3,3,4,5}; + int target = 4; + //두개 합쳐서 4가 나오는 경우 + + Arrays.sort(arr); + + int start = 0; + int end = arr.length-1; + int answer = 0; + + while(start<=end) { + + int sum = arr[start] + arr[end]; + + if(sum>target) end--; + else if(sum==target) { + System.out.println(start+","+end); + answer++; + start++; + end--; + }else if(sum=target) end--; + else if(sum=target) sum -= arr[l++]; + else if(r==arr.length) break; + else if(sum q = new LinkedList(); + + q.offer(start); + + visited[start] = true; + + while(!q.isEmpty()) { + int nodeIndex = q.poll(); + sb.append(nodeIndex + " -> "); + + for(int i=0;i que = new LinkedList<>(); + int[][] count = new int[maps.length][maps[0].length]; + + que.add(new Position(0,0)); + count[0][0] = 1; + + while(!que.isEmpty()) { + + Position cur = que.poll(); + + int currentCount = count[cur.y][cur.x]; + + for(int i=0;i<4;i++) { + Position p = new Position(cur.x+move[i][1],cur.y+move[i][0]); + + if(p.x<0||p.y<0||maps[0].length-12) { + System.out.println("3개 조합"); + System.out.println(now); + }else if(check>1) { + System.out.println("2개 조합"); + System.out.println(now); + }else { + System.out.println("1개 조합"); + System.out.println(now); + } + + + + } + + + +} diff --git a/Basic_Of_Algorithm/src/Today_22_05_10/dfs.java b/Basic_Of_Algorithm/src/Today_22_05_10/dfs.java new file mode 100644 index 0000000..5f88868 --- /dev/null +++ b/Basic_Of_Algorithm/src/Today_22_05_10/dfs.java @@ -0,0 +1,46 @@ +package Today_22_05_10; + +public class dfs { + + public static void main(String[] args) { + + int[]arr = {1,2,3}; + + boolean[]visited = new boolean[arr.length]; + + dfsClass dfsclass = new dfsClass(); + + dfsclass.dfs(arr,visited,"",arr.length); + + } + +} +class dfsClass{ + + //dfs를 위한 메소드 + void dfs(int[]arr,boolean[]visited,String now,int count){ + + print(now); + + if(count==0) return; + + for(int i=0;i q= new LinkedList<>(); + + q.offer(start); + + while(!q.isEmpty()) { + + int index = q.poll(); + + sb.append(index + "-> "); + + for(int i=0;i que = new LinkedList<>(); + + que.add(new Position2(start[0],start[1])); + + count[start[0]][start[1]] = 0; + + int answer = -1; + + while(!que.isEmpty()) { + + Position2 current = que.poll(); + + int currentCount = count[current.y][current.x]; + if(map[current.y][current.x]=='E') { + + answer = currentCount; + + break; + } + + + for(int i=0;i<4;i++) { + + Position2 p = new Position2(current.y+move[i][0],current.x+move[i][1]); + + if(p.y<0||p.x<0||map.length-1target) { + end--; + }else if(sum==target) { + System.out.println("index : {"+start+" , "+end+"}"); + answer++; + end--; + + } + + + + + + } + + System.out.println(answer); + + + + } + +} diff --git a/Basic_Of_Algorithm/src/Today_22_05_10/twoPointerRangeSum.java b/Basic_Of_Algorithm/src/Today_22_05_10/twoPointerRangeSum.java new file mode 100644 index 0000000..8d503d4 --- /dev/null +++ b/Basic_Of_Algorithm/src/Today_22_05_10/twoPointerRangeSum.java @@ -0,0 +1,45 @@ +package Today_22_05_10; + +import java.util.Arrays; + +public class twoPointerRangeSum { + + public static void main(String[] args) { + + + int[]arr = {1,1,2,4}; + + //조합 뽑아내서 8이 되는 경우의 수 + + + int target = 4; + + int answer = 0; + + int l = 0; + int r = 0; + int sum = 0; + + while(true) { + + if(sum>target) sum -= arr[l++]; + else if(sum==target) { + System.out.println(sum+","+l+","+r); + answer++; + sum -=arr[l++]; + }else if(sum