diff --git a/src/CLASS/D17/swea/prob1238_contact.java b/src/CLASS/D17/swea/prob1238_contact.java new file mode 100644 index 0000000..1059987 --- /dev/null +++ b/src/CLASS/D17/swea/prob1238_contact.java @@ -0,0 +1,79 @@ +package CLASS.D17.swea; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.ArrayDeque; +import java.util.ArrayList; +import java.util.Queue; +import java.util.StringTokenizer; + + +public class prob1238_contact { + + static int n; + static ArrayList arr[]=new ArrayList[101]; + public static void main(String[] args) throws IOException { + BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st; + StringBuilder sb= new StringBuilder(); + + //int t=Integer.parseInt(in.readLine()); + int t=10; + int tt=0; + for (int i = 0; i < 101; i++) { + arr[i]=new ArrayList<>(); + } + while(t>tt){ + st = new StringTokenizer(in.readLine(), " "); + n=Integer.parseInt(st.nextToken()); + int s=Integer.parseInt(st.nextToken()); + + setArr(); + sb.append("#").append(++tt).append(" "); + st=new StringTokenizer(in.readLine()," "); + for (int i = 0; i < n/2; i++) { + int val1=Integer.parseInt(st.nextToken()); + int val2=Integer.parseInt(st.nextToken()); + arr[val1].add(val2); + } + + sb.append(BFS(s)).append("\n"); + } + System.out.println(sb); + } + + private static int BFS(int s) { + Queue q= new ArrayDeque<>(); + int depth[]=new int[101]; + q.offer(s); + while(!q.isEmpty()){ + int node= q.poll(); + for (int i = 0; i < arr[node].size(); i++) { + int cnode=arr[node].get(i); + if(depth[cnode]==0&&cnode!=s){ + depth[cnode]=depth[node]+1; + q.offer(cnode); + } + } + } + int mdepth=0,val=0; + for (int i = 1; i < 101; i++) { + if(mdepth shark = new ArrayList<>(); + + static int[] par; + + public static void main(String[] args) throws IOException { + BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st; + StringBuilder sb = new StringBuilder(); + + st = new StringTokenizer(in.readLine(), " "); + r = Integer.parseInt(st.nextToken()); + c = Integer.parseInt(st.nextToken()); + m = Integer.parseInt(st.nextToken()); + arr = new int[r + 1][c + 1]; + + speed = new int[m + 1]; + direction = new int[m + 1]; + size = new int[m + 1]; + isMove = new boolean[m + 1]; + + shark.add(null); + for (int i = 1; i <= m; i++) { + st = new StringTokenizer(in.readLine(), " "); + int x = Integer.parseInt(st.nextToken()); + int y = Integer.parseInt(st.nextToken()); + + arr[x][y] = i; + shark.add(new int[]{x, y}); + speed[i] = Integer.parseInt(st.nextToken()); + direction[i] = Integer.parseInt(st.nextToken()); + size[i] = Integer.parseInt(st.nextToken()); + } + size[0] = 0; + + int sum = 0; + + for (int i = 1; i < c; i++) { + sum += getFish(i); + Arrays.fill(isMove, false); + for (int j = 1; j <= m; j++) { + if (shark.get(j) != null) { + moveShark(j); + } + } + } + sum += getFish(c); + + System.out.println(sum); + } + + static int dx[] = {-1, 1, 0, 0}; + static int dy[] = {0, 0, 1, -1}; + + private static void moveShark(int s) { + int len; + int mx = shark.get(s)[0]; + int my = shark.get(s)[1]; + if(!isMove[arr[mx][my]]){ + arr[mx][my]=0; + } + if (direction[s] == 1 || direction[s] == 2) { + len = speed[s] % ((r - 1) * 2); + while (len > 0) { + if (mx == 1) { + direction[s] = 2; + } else if (mx == r) { + direction[s] = 1; + } + mx = mx + dx[direction[s] - 1]; + len--; + } + } else { + len = speed[s] % ((c - 1) * 2); + while (len > 0) { + if (my == 1) { + direction[s] = 3; + + } else if (my == c) { + direction[s] = 4; + } + my = my + dy[direction[s] - 1]; + len--; + } + } + + isMove[s] = true; + + if (arr[mx][my] != 0 && isMove[arr[mx][my]]) { + if (size[arr[mx][my]] > size[s]) { + shark.set(s, null); + } else { + shark.set(arr[mx][my], null); + arr[mx][my] = s; + shark.set(s, new int[]{mx, my}); + } + } else { + arr[mx][my] = s; + shark.set(s, new int[]{mx, my}); + } + } + + private static int getFish(int loc) { + for (int i = 1; i <= r; i++) { + if (arr[i][loc] != 0) { + int s = arr[i][loc]; + arr[i][loc] = 0; + shark.set(s, null); + return size[s]; + } + } + return 0; + } + +} \ No newline at end of file diff --git a/src/CLASS/D22/Memoization_sample.java b/src/CLASS/D22/Memoization_sample.java new file mode 100644 index 0000000..b19f448 --- /dev/null +++ b/src/CLASS/D22/Memoization_sample.java @@ -0,0 +1,29 @@ +package CLASS.D22; + +import java.util.Arrays; +import java.util.Scanner; + +public class Memoization_sample { + + private static long[] memo; + + private static long fibo2(int n) { + if (memo[n] == -1) { + memo[n] = fibo2(n - 1) + fibo2(n - 2); + } + return memo[n]; + } + + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + int n = sc.nextInt(); + + memo = new long[n + 1]; + Arrays.fill(memo, -1); + memo[0] = 0; + memo[1] = 1; + + System.out.println(fibo2(n)); + + } +} diff --git "a/src/CLASS/D22/boj/prob1149_RGB\352\261\260\353\246\254.java" "b/src/CLASS/D22/boj/prob1149_RGB\352\261\260\353\246\254.java" new file mode 100644 index 0000000..9b21e33 --- /dev/null +++ "b/src/CLASS/D22/boj/prob1149_RGB\352\261\260\353\246\254.java" @@ -0,0 +1,34 @@ +package CLASS.D22.boj; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.StringTokenizer; + +public class prob1149_RGB거리 { + public static void main(String[] args) throws IOException { + BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); + int n=Integer.parseInt(in.readLine()); + StringTokenizer st; + int home[][]=new int[n][3]; + int dp[][]=new int[n][3]; + + for (int i = 0; i < n; i++) { + st=new StringTokenizer(in.readLine()," "); + home[i][0]=Integer.parseInt(st.nextToken()); + home[i][1]=Integer.parseInt(st.nextToken()); + home[i][2]=Integer.parseInt(st.nextToken()); + } + dp[0][0]=home[0][0]; + dp[0][1]=home[0][1]; + dp[0][2]=home[0][2]; + + for (int i = 1; i < n; i++) { + dp[i][0]=home[i][0]+Math.min(dp[i-1][1],dp[i-1][2]); + dp[i][1]=home[i][1]+Math.min(dp[i-1][0],dp[i-1][2]); + dp[i][2]=home[i][2]+Math.min(dp[i-1][0],dp[i-1][1]); + } + System.out.println(Math.min(dp[n-1][0],Math.min(dp[n-1][1],dp[n-1][2]))); + + } +} diff --git "a/src/CLASS/D22/boj/prob1463_1\353\241\234\353\247\214\353\223\244\352\270\260.java" "b/src/CLASS/D22/boj/prob1463_1\353\241\234\353\247\214\353\223\244\352\270\260.java" new file mode 100644 index 0000000..62e914e --- /dev/null +++ "b/src/CLASS/D22/boj/prob1463_1\353\241\234\353\247\214\353\223\244\352\270\260.java" @@ -0,0 +1,35 @@ +package CLASS.D22.boj; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.Arrays; +import java.util.StringTokenizer; + +public class prob1463_1로만들기 +{ + static int dp[]; + static int n; + public static void main(String[] args) throws IOException { + BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); + StringBuilder sb= new StringBuilder(); + StringTokenizer st; + + n=Integer.parseInt(in.readLine()); + + dp=new int[n+1]; + dp[1] = 0; + + for (int i = 2; i < n + 1; i++) { + dp[i] = dp[i - 1] + 1; + if (i % 2 == 0 && dp[i] > dp[i / 2] + 1) { + dp[i] = dp[i / 2] + 1; + } + if (i % 3 == 0 && dp[i] > dp[i / 3] + 1) { + dp[i] = dp[i / 3] + 1; + } + } + System.out.println(dp[n]); + } + +} diff --git "a/src/CLASS/D23/boj/prob1010_\353\213\244\353\246\254\353\206\223\352\270\260.java" "b/src/CLASS/D23/boj/prob1010_\353\213\244\353\246\254\353\206\223\352\270\260.java" new file mode 100644 index 0000000..1c031b5 --- /dev/null +++ "b/src/CLASS/D23/boj/prob1010_\353\213\244\353\246\254\353\206\223\352\270\260.java" @@ -0,0 +1,51 @@ +package CLASS.D23.boj; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.StringTokenizer; + +public class prob1010_다리놓기 { + + static int cnt; + public static void main(String[] args) throws IOException { + BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); + + int t=Integer.parseInt(in.readLine()); + int tt=0; + + while(t>tt){ + int n,m; + StringTokenizer st=new StringTokenizer(in.readLine()," "); + n=Integer.parseInt(st.nextToken()); + m=Integer.parseInt(st.nextToken()); + + if(n>m){ + calcComb(n, m); + } + else if(nn-m) m=n-m; + int[][]b=new int[n+1][m+1]; + for (int i = 0; i <=n; i++) { + for (int j = 0, end= Math.min(i,m);j<=end; j++) { + if(j==0||i==j) + b[i][j]=1; + else b[i][j]=b[i-1][j-1]+b[i-1][j]; + } + } + cnt=b[n][m]; + } +} diff --git "a/src/CLASS/D23/boj/prob17070_\355\214\214\354\235\264\355\224\204\354\230\256\352\270\260\352\270\260.java" "b/src/CLASS/D23/boj/prob17070_\355\214\214\354\235\264\355\224\204\354\230\256\352\270\260\352\270\260.java" new file mode 100644 index 0000000..6305c09 --- /dev/null +++ "b/src/CLASS/D23/boj/prob17070_\355\214\214\354\235\264\355\224\204\354\230\256\352\270\260\352\270\260.java" @@ -0,0 +1,56 @@ +package CLASS.D23.boj; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.ArrayDeque; +import java.util.Arrays; +import java.util.Queue; +import java.util.StringTokenizer; + +public class prob17070_파이프옮기기 { + + static int table[][]; + static int dp[][][]; + + public static void main(String[] args) throws IOException { + BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st; + int n = Integer.parseInt(in.readLine()); + + table = new int[n][n]; + + dp = new int[n][n][3]; + + + for (int i = 0; i < n; i++) { + st = new StringTokenizer(in.readLine(), " "); + for (int j = 0; j < n; j++) { + + table[i][j] = Integer.parseInt(st.nextToken()); + } + } + + dp[0][1][0] = 1; + for (int i = 0; i < n; i++) { + for (int j = 1; j < n; j++) { + if(table[i][j]==1){ + continue; + } + if (i == 0) { + if(j<2) continue; + dp[i][j][0] = dp[i][j - 1][0]; + } + else{ + dp[i][j][0]=dp[i][j-1][0]+dp[i][j-1][1]; + dp[i][j][2]=dp[i-1][j][1]+dp[i-1][j][2]; + if((table[i-1][j]+ table[i][j-1])==0){ + dp[i][j][1]=dp[i-1][j-1][1]+dp[i-1][j-1][0]+dp[i-1][j-1][2]; + } + } + } + } + System.out.println(dp[n-1][n-1][0]+dp[n-1][n-1][1]+dp[n-1][n-1][2]); + } + +} diff --git a/src/CLASS/D24/KnapsackTest.java b/src/CLASS/D24/KnapsackTest.java new file mode 100644 index 0000000..e5ccaad --- /dev/null +++ b/src/CLASS/D24/KnapsackTest.java @@ -0,0 +1,33 @@ +package CLASS.D24; + +import java.util.Scanner; + +public class KnapsackTest { + public static void main(String[] args) { + Scanner sc= new Scanner(System.in); + int n= sc.nextInt(); + int w=sc.nextInt(); + + int [] weights= new int[n+1]; + int [] profits=new int[n+1]; + + for (int i = 0; i <=n; i++) { + weights[i]= sc.nextInt(); + profits[i]=sc.nextInt(); + } + int[][]d= new int[n+1][w+1]; + + for (int i = 1; i <=n ; i++) { + for (int j = 1; j <=n; j++) { + if(weights[i]>j){ + d[i][j]=d[i-1][j]; + } + else{ + d[i][j]=Math.max(d[i-1][j], profits[i]+d[i-1][j-weights[i]]); + } + } + } + System.out.println(d[n][w]); + + } +} diff --git "a/src/CLASS/D24/boj/prob12865_\355\217\211\353\262\224\355\225\234\353\260\260\353\202\255.java" "b/src/CLASS/D24/boj/prob12865_\355\217\211\353\262\224\355\225\234\353\260\260\353\202\255.java" new file mode 100644 index 0000000..aaee032 --- /dev/null +++ "b/src/CLASS/D24/boj/prob12865_\355\217\211\353\262\224\355\225\234\353\260\260\353\202\255.java" @@ -0,0 +1,37 @@ +package CLASS.D24.boj; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.StringTokenizer; + +public class prob12865_평범한배낭 { + public static void main(String[] args) throws IOException { + BufferedReader in=new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st=new StringTokenizer(in.readLine()," ");; + int n=Integer.parseInt(st.nextToken()); + int k=Integer.parseInt(st.nextToken()); + + int w[]=new int[n+1]; + int v[]=new int[n+1]; + for (int i = 1; i <= n; i++) { + st=new StringTokenizer(in.readLine()," "); + w[i]=Integer.parseInt(st.nextToken()); + v[i]=Integer.parseInt(st.nextToken()); + } + + int[][] dp=new int[n+1][k+1]; + for (int i = 1; i < n+1; i++) { + for (int j = 1; j < k+1; j++) { + if(j>=w[i]){ + dp[i][j]=Math.max(dp[i-1][j],v[i]+dp[i-1][j-w[i]]); + } + else{ + dp[i][j]=dp[i-1][j]; + } + } + } + System.out.println(dp[n][k]); + } +} + diff --git a/src/CLASS/D25/boj/LISTest.java b/src/CLASS/D25/boj/LISTest.java new file mode 100644 index 0000000..ae6222b --- /dev/null +++ b/src/CLASS/D25/boj/LISTest.java @@ -0,0 +1,28 @@ +package CLASS.D25.boj; + +import java.util.Scanner; + +public class LISTest { + public static void main(String[] args) { + Scanner sc= new Scanner(System.in); + int n= sc.nextInt(); + int []arr=new int[n]; + int []lis=new int[n]; + + for (int i = 0; i < n; i++) { + arr[i]=sc.nextInt(); + } + + int max=0; + for (int i = 0; i < n; i++) { + lis[i]=1; + for (int j = 0; j < i; j++) { + if(arr[j]