diff --git "a/BOJ/[1927] \354\265\234\354\206\214 \355\236\231/leesuyong849/Main.java" "b/BOJ/[1927] \354\265\234\354\206\214 \355\236\231/leesuyong849/Main.java" new file mode 100644 index 0000000..dc4ffe9 --- /dev/null +++ "b/BOJ/[1927] \354\265\234\354\206\214 \355\236\231/leesuyong849/Main.java" @@ -0,0 +1,29 @@ +package BOJ_1927_최소힙; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.PriorityQueue; + +public class Main { + + static int N; + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + N = Integer.parseInt(br.readLine()); + StringBuilder sb = new StringBuilder(); + + PriorityQueue que = new PriorityQueue<>(); + for (int i = 0; i < N; i++) { + int a = Integer.parseInt(br.readLine()); + + if (a == 0) { + if (!que.isEmpty()) sb.append(que.poll()).append('\n'); + else sb.append("0").append('\n'); + } else + que.add(a); + } + + System.out.println(sb); + } +} diff --git "a/BOJ/[19637] IF\353\254\270 \354\242\200 \353\214\200\354\213\240 \354\215\250\354\244\230/leesuyong849/Main.java" "b/BOJ/[19637] IF\353\254\270 \354\242\200 \353\214\200\354\213\240 \354\215\250\354\244\230/leesuyong849/Main.java" new file mode 100644 index 0000000..6d46c66 --- /dev/null +++ "b/BOJ/[19637] IF\353\254\270 \354\242\200 \353\214\200\354\213\240 \354\215\250\354\244\230/leesuyong849/Main.java" @@ -0,0 +1,63 @@ +package BOJ_19637_IF문; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.*; + +public class Main { + + static class Item implements Comparable { + String name; + int value; + + Item(String name, int value) { + this.name = name; + this.value = value; + } + + @Override + public int compareTo(Item o) { + return Integer.compare(this.value, o.value); + } + } + + static int N, M; + static List map; + + 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()); + M = Integer.parseInt(st.nextToken()); + String[] name = new String[N]; + int[] value = new int[N]; + + for (int i = 0; i < N; i++) { + st = new StringTokenizer(br.readLine()); + name[i] = st.nextToken(); + value[i] = Integer.parseInt(st.nextToken()); + } + + + StringBuilder sb = new StringBuilder(); + + for (int i = 0; i < M; i++) { + int x = Integer.parseInt(br.readLine()); + int idx = lowerBound(value, x); + sb.append(name[idx]).append('\n'); + } + + System.out.println(sb); + } + + static int lowerBound(int[] arr, int target) { + int l = 0, r = arr.length; // [l, r) + while (l < r) { + int mid = (l + r) >>> 1; + if (arr[mid] >= target) r = mid; + else l = mid + 1; + } + return l; + } +} diff --git "a/BOJ/[20310] \355\203\200\353\205\270\354\212\244/leesuyong849/Main.java" "b/BOJ/[20310] \355\203\200\353\205\270\354\212\244/leesuyong849/Main.java" new file mode 100644 index 0000000..c46f4a6 --- /dev/null +++ "b/BOJ/[20310] \355\203\200\353\205\270\354\212\244/leesuyong849/Main.java" @@ -0,0 +1,42 @@ +package BOJ_20310_타노스; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +public class Main { + + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + int cnt0 = 0; + String s = br.readLine(); + int length = s.length(); + + for (int i = 0; i < length; i++) { + if (s.charAt(i) == '0') cnt0++; + } + + int cnt1 = length - cnt0; + int remove1 = cnt1 / 2; + int remove0 = cnt0 / 2; + + StringBuilder sb = new StringBuilder(s); + + + for (int i = 0; i < sb.length() && remove1 > 0; i++) { + if (sb.charAt(i) == '1') { + sb.deleteCharAt(i); + remove1--; + i--; // 삭제하면 인덱스 당겨지므로 보정 + } + } + + for (int i = sb.length() - 1; i >= 0 && remove0 > 0; i--) { + if (sb.charAt(i) == '0') { + sb.deleteCharAt(i); + remove0--; + } + } + System.out.println(sb); + } +} diff --git "a/BOJ/[22233] \352\260\200\355\235\254\354\231\200 \355\202\244\354\233\214\353\223\234/leesuyong849/Main.java" "b/BOJ/[22233] \352\260\200\355\235\254\354\231\200 \355\202\244\354\233\214\353\223\234/leesuyong849/Main.java" new file mode 100644 index 0000000..8ea47ea --- /dev/null +++ "b/BOJ/[22233] \352\260\200\355\235\254\354\231\200 \355\202\244\354\233\214\353\223\234/leesuyong849/Main.java" @@ -0,0 +1,50 @@ +package BOJ_22233_가희와키워드; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.HashMap; +import java.util.Set; +import java.util.StringTokenizer; + +public class Main { + + static int N, M; + static HashMap map; + + 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()); + M = Integer.parseInt(st.nextToken()); + map = new HashMap<>(); + + + for (int i = 0; i < N; i++) { + map.put(br.readLine(), false); + } + + StringBuilder sb = new StringBuilder(); + + for (int i = 0; i < M; i++) { + String s = br.readLine(); + String[] split = s.split(","); + + //map에서 찾아서 true로 변환 + for (String s1 : split) { + map.computeIfPresent(s1, (k, v) -> true); + } + + Set keys = map.keySet(); + int cnt = 0; + for (String key : keys) { + Boolean aBoolean = map.get(key); + if (!aBoolean) cnt++; + } + + sb.append(cnt).append('\n'); + } + + System.out.println(sb); + } +} diff --git "a/BOJ/[22233] \352\260\200\355\235\254\354\231\200 \355\202\244\354\233\214\353\223\234/leesuyong849/Main2.java" "b/BOJ/[22233] \352\260\200\355\235\254\354\231\200 \355\202\244\354\233\214\353\223\234/leesuyong849/Main2.java" new file mode 100644 index 0000000..f03f3b3 --- /dev/null +++ "b/BOJ/[22233] \352\260\200\355\235\254\354\231\200 \355\202\244\354\233\214\353\223\234/leesuyong849/Main2.java" @@ -0,0 +1,42 @@ +package BOJ_22233_가희와키워드; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.HashMap; +import java.util.HashSet; +import java.util.StringTokenizer; + +public class Main2 { + static int N, M; + static HashSet map; + + 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()); + M = Integer.parseInt(st.nextToken()); + map = new HashSet<>(); + + for (int i = 0; i < N; i++) { + map.add(br.readLine()); + } + + //아직 남아 있는 수 + int result = N; + StringBuilder sb = new StringBuilder(); + + for (int i = 0; i < M; i++) { + String line = br.readLine(); + String[] split = line.split(","); + + for (String s : split) { + if (map.remove(s)) result--; + } + + sb.append(result).append('\n'); + } + + System.out.println(sb); + } +} diff --git "a/BOJ/[22251] \353\271\214\353\237\260 \355\230\270\354\204\235/leesuyong849/Main.java" "b/BOJ/[22251] \353\271\214\353\237\260 \355\230\270\354\204\235/leesuyong849/Main.java" new file mode 100644 index 0000000..d25d8b2 --- /dev/null +++ "b/BOJ/[22251] \353\271\214\353\237\260 \355\230\270\354\204\235/leesuyong849/Main.java" @@ -0,0 +1,72 @@ +package BOJ_22251_빌런호석; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.StringTokenizer; + +public class Main { + + static int N, K, P, X; + static int[][] display = {{1, 1, 1, 0, 1, 1, 1}, //0 + {0, 0, 1, 0, 0, 0, 1}, //1 + {0, 1, 1, 1, 1, 1, 0}, //2 + {0, 1, 1, 1, 0, 1, 1}, //3 + {1, 0, 1, 1, 0, 0, 1}, //4 + {1, 1, 0, 1, 0, 1, 1}, //5 + {1, 1, 0, 1, 1, 1, 1}, //6 + {0, 1, 1, 0, 0, 0, 1}, //7 + {1, 1, 1, 1, 1, 1, 1}, //8 + {1, 1, 1, 1, 0, 1, 1}}; //9 + + 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()); //자리수 + P = Integer.parseInt(st.nextToken()); //최대 반전시킬 계획 + X = Integer.parseInt(st.nextToken()); //현제엘리베이터 위치 + + int[] myNum; + + myNum = numToDigit(X); + + int check = check(myNum); + System.out.println(check); + } + + public static int check(int[] digit) { + int cnt = 0; + for (int i = 1; i <= N; i++) { + if (i == X) continue; + if (ableReverse(i, digit)) cnt++; + } + + return cnt; + } + + public static boolean ableReverse(int target, int[] myNum) { + int[] targetToDigit = numToDigit(target); + int changeCal = 0; + + for (int i = 0; i < K; i++) { + int form = myNum[i]; + int to = targetToDigit[i]; + if (form == to) continue; + + for (int j = 0; j < 7; j++) { + if (display[form][j] != display[to][j]) changeCal++; + } + } + return changeCal <= P; + } + + public static int[] numToDigit(int x) { + int[] result = new int[K]; + for (int i = K - 1; i >=0; i--) { + result[i] = x % 10; + x /= 10; + } + return result; + } +} diff --git "a/BOJ/[7490] 0 \353\247\214\353\223\244\352\270\260/leesuyong849/Main.java" "b/BOJ/[7490] 0 \353\247\214\353\223\244\352\270\260/leesuyong849/Main.java" new file mode 100644 index 0000000..b9ae152 --- /dev/null +++ "b/BOJ/[7490] 0 \353\247\214\353\223\244\352\270\260/leesuyong849/Main.java" @@ -0,0 +1,85 @@ +package BOJ_7490_0만들기; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +public class Main { + + static char[] ops; + static int N, C; + static StringBuilder sb = new StringBuilder(); + + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + N = Integer.parseInt(br.readLine()); + + sb = new StringBuilder(); + + for (int i = 0; i < N; i++) { + C = Integer.parseInt(br.readLine()); + ops = new char[C - 1]; + solve(C); + + if (i != N - 1) sb.append('\n'); + } + + System.out.println(sb); + } + + static void solve(int c) { + + dfs(0); + } + + public static void dfs(int idx) { + if (idx == C - 1) { + if (evaluate() == 0) { + sb.append(builder()).append('\n'); + } + return; + } + + //부호를 저장하고 다음 단계로 간다. + ops[idx] = ' '; + dfs(idx + 1); + + ops[idx] = '+'; + dfs(idx + 1); + + ops[idx] = '-'; + dfs(idx + 1); + } + + public static String builder() { + StringBuilder sbn = new StringBuilder(); + sbn.append("1"); + for (int i = 0; i < C - 1; i++) { + sbn.append(ops[i]).append(i + 2); + } + return sbn.toString(); + } + + public static long evaluate() { + long result = 0; + long num = 1; + int sign = 1; + + for (int i = 0; i < C - 1; i++) { + char op = ops[i]; + int next = i + 2; + + if (op == ' ') { + num = num * 10 + next; + } else { + //이전에 갱신된 부호와 값을 반영한다. + result += sign * num; + //다음 사이클을 위해 부호와 값을 반영한다. + sign = (op == '+') ? 1 : -1; + num = next; + } + } + result += sign * num; + return result; + } +}