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