diff --git "a/\354\234\240\353\263\221\352\267\234_12\354\243\274\354\260\250/[BOJ-1327] \354\206\214\355\212\270 \352\262\214\354\236\204.java" "b/\354\234\240\353\263\221\352\267\234_12\354\243\274\354\260\250/[BOJ-1327] \354\206\214\355\212\270 \352\262\214\354\236\204.java" new file mode 100644 index 00000000..268c02d7 --- /dev/null +++ "b/\354\234\240\353\263\221\352\267\234_12\354\243\274\354\260\250/[BOJ-1327] \354\206\214\355\212\270 \352\262\214\354\236\204.java" @@ -0,0 +1,88 @@ +import java.io.*; +import java.util.*; + +public class Main { + private static int n, k; + private static Set set; + private static int result; + private static String goal; + + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + + StringTokenizer st = new StringTokenizer(br.readLine()); + n = Integer.parseInt(st.nextToken()); + k = Integer.parseInt(st.nextToken()); + + int[] number = new int[n]; + int[] temp = new int[n]; + st = new StringTokenizer(br.readLine()); + for(int i=0; i(); + set.add(Arrays.toString(number)); + + result = Integer.MAX_VALUE; + bfs(number); + + if(result == Integer.MAX_VALUE) System.out.println(-1); + else System.out.println(result); + } + + private static void bfs(int[] arr) { + Queue q = new LinkedList<>(); + q.offer(new Node(arr, 0)); + set.add(Arrays.toString(arr)); + + while(!q.isEmpty()) { + Node node = q.poll(); + + if(node.count > result) continue; + if(goal.equals(node.toString())) { + result = node.count; + continue; + } + + for(int i=0; i+k-1 0) sb.append("Y "); + else sb.append("N "); + } + + System.out.println(sb.toString().trim()); + } +} diff --git "a/\354\234\240\353\263\221\352\267\234_12\354\243\274\354\260\250/[BOJ-3079] \354\236\205\352\265\255\354\213\254\354\202\254.java" "b/\354\234\240\353\263\221\352\267\234_12\354\243\274\354\260\250/[BOJ-3079] \354\236\205\352\265\255\354\213\254\354\202\254.java" new file mode 100644 index 00000000..76e6cb91 --- /dev/null +++ "b/\354\234\240\353\263\221\352\267\234_12\354\243\274\354\260\250/[BOJ-3079] \354\236\205\352\265\255\354\213\254\354\202\254.java" @@ -0,0 +1,50 @@ +import java.io.*; +import java.util.*; + +public class Main { + private static long[] process; + private static long result; + private static long m; + + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + + StringTokenizer st = new StringTokenizer(br.readLine()); + long n = Long.parseLong(st.nextToken()); + m = Long.parseLong(st.nextToken()); + + process = new long[(int) n]; + long max = 0; + for(int i=0; i= m) { + result = Math.min(result, mid); + right = mid-1; + continue; + } + left = mid+1; + } + + System.out.println(result); + } + + private static long counting(long mid) { + long count = 0; + for(int i=0; i m) break; + count += mid/process[i]; + } + + return count; + } +} diff --git "a/\354\234\240\353\263\221\352\267\234_12\354\243\274\354\260\250/[BOJ-7682] \355\213\261\355\203\235\355\206\240.java" "b/\354\234\240\353\263\221\352\267\234_12\354\243\274\354\260\250/[BOJ-7682] \355\213\261\355\203\235\355\206\240.java" new file mode 100644 index 00000000..1b7df53b --- /dev/null +++ "b/\354\234\240\353\263\221\352\267\234_12\354\243\274\354\260\250/[BOJ-7682] \355\213\261\355\203\235\355\206\240.java" @@ -0,0 +1,146 @@ +import java.io.*; +import java.util.*; + +public class Main { + private static final String VALID = "valid"; + private static final String INVALID = "invalid"; + private static char[][] map; + private static List xs = new ArrayList<>(); + private static List os = new ArrayList<>(); + private static boolean[] xvisited; + private static boolean[] ovisited; + private static char[][] testMap; + private static int[][] d = {{0,1},{1,1},{1,0},{1,-1},{0,-1}}; + + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + + StringBuilder sb = new StringBuilder(); + while(true) { + String input = br.readLine(); + if(input.equals("end")) { + System.out.println(sb.toString().trim()); + return; + } + + map = new char[3][3]; + xs.clear(); + os.clear(); + for(int i=0; i<3; i++) { + for(int j=0; j<3; j++) { + map[i][j] = input.charAt(i*3 + j); + if(map[i][j] == 'X') xs.add(new int[] {i,j}); + else if(map[i][j] == 'O') os.add(new int[] {i,j}); + } + } + + //case 1: O의 개수가 X보다 많은 경우 불가능 + //case 2: X의 개수가 O보다 2개 이상 많은 경우 불가능 + if(xs.size() < os.size() || xs.size()-os.size() > 1) { + sb.append(INVALID).append("\n"); + continue; + } + //case 3: 꽉 안 찼는데 안 끝난 경우 불가능 + if(xs.size()+os.size() < 9 && !done(map, xs.size())) { + sb.append(INVALID).append("\n"); + continue; + } + + //case 4: 꽉 찼는데 안 끝난 경우 가능 + if(!done(map, xs.size())) { + sb.append(VALID).append("\n"); + continue; + } + + //case 5: 꽉 안 찼는데 끝난 경우 직접 시뮬 + //case 6: 꽉 찼는데 끝난 경우 직접 시뮬 + xvisited = new boolean[xs.size()]; + ovisited = new boolean[os.size()]; + testMap = new char[3][3]; + boolean isDone = false; + for(int i=0; i=0 && nx<3 && ny>=0 && ny<3) { + if(map[nx][ny] == target) count++; + nx = nx + d[i][0]; + ny = ny + d[i][1]; + } + + if(count == 3) return true; + } + + return false; + } +}