From ab793274889b1b866c78636192da2b97359a0bb0 Mon Sep 17 00:00:00 2001 From: BeomSeogKim Date: Tue, 23 Jan 2024 10:25:07 +0900 Subject: [PATCH 01/80] =?UTF-8?q?[6=EC=A3=BC=EC=B0=A8]=20=ED=81=90?= =?UTF-8?q?=EC=99=80=20=EA=B7=B8=EB=9E=98=ED=94=84=20BOJ=5F7562=20?= =?UTF-8?q?=EA=B9=80=EB=B2=94=EC=84=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/tommy/BOJ_7562.java | 60 +++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 src/main/java/tommy/BOJ_7562.java diff --git a/src/main/java/tommy/BOJ_7562.java b/src/main/java/tommy/BOJ_7562.java new file mode 100644 index 0000000..e376302 --- /dev/null +++ b/src/main/java/tommy/BOJ_7562.java @@ -0,0 +1,60 @@ +package tommy; + +import java.util.LinkedList; +import java.util.Queue; +import java.util.Scanner; + +public class BOJ_7562 { + static int[] dx = {1, 2, 2, 1, -1, -2, -2, -1}; + static int[] dy = {2, 1, -1, -2, -2, -1, 1, 2}; + static int I; + static int curX, curY, objX, objY; + static int[][] arr; + static boolean[][] visited; + static StringBuilder sb = new StringBuilder(); + + + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + int N = sc.nextInt(); + for (int i = 0; i < N; i++) { + I = sc.nextInt(); + arr = new int[I][I]; + visited = new boolean[I][I]; + + curX = sc.nextInt(); + curY = sc.nextInt(); + objX = sc.nextInt(); + objY = sc.nextInt(); + + bfs(); + sb.append(arr[objX][objY]).append("\n"); + } + System.out.println(sb); + } + + private static void bfs() { + Queue queue = new LinkedList<>(); + queue.offer(new int[]{curX, curY}); + visited[curX][curY] = true; + + while (!queue.isEmpty()) { + int[] poll = queue.poll(); + int nx = poll[0]; + int ny = poll[1]; + + for (int i = 0; i < 8; i++) { + int newX = nx + dx[i]; + int newY = ny + dy[i]; + + if (newX >= 0 && newX < I && newY >= 0 && newY < I) { + if (!visited[newX][newY]) { + queue.offer(new int[]{newX, newY}); + arr[newX][newY] = arr[nx][ny] + 1; + visited[newX][newY] = true; + } + } + } + } + } +} From 036c4f4dce76832b64ec105fe79fa112146f2a3b Mon Sep 17 00:00:00 2001 From: BeomSeogKim Date: Tue, 23 Jan 2024 15:53:37 +0900 Subject: [PATCH 02/80] =?UTF-8?q?[6=EC=A3=BC=EC=B0=A8]=20=ED=81=90?= =?UTF-8?q?=EC=99=80=20=EA=B7=B8=EB=9E=98=ED=94=84=20BOJ=5F1697=20?= =?UTF-8?q?=EA=B9=80=EB=B2=94=EC=84=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/tommy/BOJ_1697.java | 54 +++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 src/main/java/tommy/BOJ_1697.java diff --git a/src/main/java/tommy/BOJ_1697.java b/src/main/java/tommy/BOJ_1697.java new file mode 100644 index 0000000..1bbb05d --- /dev/null +++ b/src/main/java/tommy/BOJ_1697.java @@ -0,0 +1,54 @@ +package tommy; + +import java.util.LinkedList; +import java.util.Queue; +import java.util.Scanner; + +public class BOJ_1697 { + static int N; + static int K; + static int[] visited = new int[100001]; + + /* + * Time Complexity : O(N) + * Space Complexity : O(N) + */ + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + N = sc.nextInt(); + K = sc.nextInt(); + + int result = bfs(N); + System.out.println(result); + } + + private static int bfs(int node) { + Queue queue = new LinkedList<>(); + queue.offer(node); + + int index = node; + visited[index] = 1; + while (!queue.isEmpty()) { + int n = queue.poll(); + + if (n == K) { + return visited[n] - 1; + } + if (n - 1 >= 0 && visited[n - 1] == 0) { + queue.offer(n - 1); + visited[n - 1] = visited[n] + 1; + } + + if (n + 1 <= 100000 && visited[n - 1] == 0) { + queue.offer(n + 1); + visited[n + 1] = visited[n] + 1; + } + + if (2 * n <= 100000 && visited[2 * n] == 0) { + queue.offer(2 * n); + visited[2 * n] = visited[n] + 1; + } + } + return -1; + } +} From 9ffb0a6922f3ad02372dfc8744288170d456d963 Mon Sep 17 00:00:00 2001 From: changhyeon Date: Tue, 23 Jan 2024 16:51:43 +0900 Subject: [PATCH 03/80] =?UTF-8?q?[6=EC=A3=BC=EC=B0=A8]=20=ED=81=90?= =?UTF-8?q?=EC=99=80=20=EA=B7=B8=EB=9E=98=ED=94=84=20BOJ=5F1697=20?= =?UTF-8?q?=ED=99=A9=EC=B0=BD=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/changhyeon/BOJ_1697.java | 63 ++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 src/main/java/changhyeon/BOJ_1697.java diff --git a/src/main/java/changhyeon/BOJ_1697.java b/src/main/java/changhyeon/BOJ_1697.java new file mode 100644 index 0000000..73486a5 --- /dev/null +++ b/src/main/java/changhyeon/BOJ_1697.java @@ -0,0 +1,63 @@ +package changhyeon; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.ArrayDeque; +import java.util.Deque; + +public class BOJ_1697 { + + private static final BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); + private static int MIN = 0, MAX = 100_001, count = 0; + private static boolean[] visited = new boolean[MAX]; + + public static void main(String[] args) throws IOException { + String[] line = bufferedReader.readLine().split(" "); + + int N = Integer.parseInt(line[0]); + int K = Integer.parseInt(line[1]); + + if (N == K) { + System.out.println(0); + return; + } + + bfs(N, K); + } + + private static void bfs(final int N, final int K) { + Deque deque = new ArrayDeque<>(); + deque.add(N); + visited[N] = true; + int size; + + while (true) { + count++; + size = deque.size(); + for (int i = 0; i < size; i++) { + int current = deque.poll(); + + if (current - 1 == K || current + 1 == K || current * 2 == K) { + System.out.println(count); + return; + } + + if (current - 1 >= MIN && current - 1 < MAX && !visited[current - 1]) { + deque.add(current - 1); + visited[current - 1] = true; + } + + if (current + 1 >= MIN && current + 1 < MAX && !visited[current + 1]) { + deque.add(current + 1); + visited[current + 1] = true; + } + + if (current * 2 >= MIN && current * 2 < MAX && !visited[current * 2]) { + deque.add(current * 2); + visited[current * 2] = true; + } + } + } + } +} From 312b0484119437fa0f2cf3cbe1dc13af75512e6f Mon Sep 17 00:00:00 2001 From: BeomSeogKim Date: Wed, 24 Jan 2024 14:22:46 +0900 Subject: [PATCH 04/80] =?UTF-8?q?[6=EC=A3=BC=EC=B0=A8]=20BFS=20BOJ=5F13913?= =?UTF-8?q?=20=EA=B9=80=EB=B2=94=EC=84=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/tommy/BOJ_13913.java | 69 ++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 src/main/java/tommy/BOJ_13913.java diff --git a/src/main/java/tommy/BOJ_13913.java b/src/main/java/tommy/BOJ_13913.java new file mode 100644 index 0000000..2615b69 --- /dev/null +++ b/src/main/java/tommy/BOJ_13913.java @@ -0,0 +1,69 @@ +package tommy; + +import java.util.LinkedList; +import java.util.Queue; +import java.util.Scanner; +import java.util.Stack; + +public class BOJ_13913 { + static int[] parent; + static int[] time; + + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + int n = sc.nextInt(); + int k = sc.nextInt(); + + if (n == k) { + System.out.println(0); + System.out.println(n); + } else { + bfs(n, k); + System.out.println(time[k] - 1); + + Stack stack = new Stack<>(); + stack.push(k); + int index = k; + while (index != n) { + stack.push(parent[index]); + index = parent[index]; + } + + StringBuilder sb = new StringBuilder(); + while (!stack.isEmpty()) { + sb.append(stack.pop()).append(" "); + } + System.out.println(sb); + } + } + + private static void bfs(int n, int k) { + Queue queue = new LinkedList<>(); + parent = new int[100001]; + time = new int[100001]; + queue.offer(n); + time[n] = 1; + + while (!queue.isEmpty()) { + Integer now = queue.poll(); + if (now == k) { + return; + } + if (now * 2 <= 100000 && time[now * 2] == 0) { + parent[now * 2] = now; + time[now * 2] = time[now] + 1; + queue.offer(now * 2); + } + if (now + 1 <= 100000 && time[now + 1] == 0) { + parent[now + 1] = now; + time[now + 1] = time[now] + 1; + queue.offer(now + 1); + } + if (now - 1 >= 0 && time[now - 1] == 0) { + parent[now - 1] = now; + time[now - 1] = time[now] + 1; + queue.offer(now - 1); + } + } + } +} From a2fd812f2c86f87ec1fba1f93b99843c3ae942f2 Mon Sep 17 00:00:00 2001 From: BeomSeogKim Date: Thu, 25 Jan 2024 00:32:23 +0900 Subject: [PATCH 05/80] =?UTF-8?q?[6=EC=A3=BC=EC=B0=A8]=20BFS=20BOJ=5F14226?= =?UTF-8?q?=20=EA=B9=80=EB=B2=94=EC=84=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/tommy/BOJ_14226.java | 59 ++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 src/main/java/tommy/BOJ_14226.java diff --git a/src/main/java/tommy/BOJ_14226.java b/src/main/java/tommy/BOJ_14226.java new file mode 100644 index 0000000..f0874e7 --- /dev/null +++ b/src/main/java/tommy/BOJ_14226.java @@ -0,0 +1,59 @@ +package tommy; + +import java.util.LinkedList; +import java.util.Queue; +import java.util.Scanner; + +public class BOJ_14226 { + + static boolean[][] visited = new boolean[1001][1001]; //[clipboard][total] + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + + int s = sc.nextInt(); + + bfs(s); + } + + private static void bfs(int s) { + Queue queue = new LinkedList<>(); + queue.offer(new Node(0, 1, 0)); + visited[0][1] = true; + + while (!queue.isEmpty()){ + Node current = queue.poll(); + + if (current.total == s){ + System.out.println(current.time); + return; + } + + // 1. 화면에 있는 이모티콘 클립 보드에 저장 + queue.offer(new Node(current.total, current.total, current.time + 1)); + + // 2. 클립보드에 있는 이모티콘 붙여넣기 + if (current.clipboard != 0 && current.total + current.clipboard <= s && !visited[current.clipboard][current.total + current.clipboard]) { + queue.offer(new Node(current.clipboard, current.total + current.clipboard, current.time + 1)); + visited[current.clipboard][current.total + current.clipboard] = true; + } + + // 3. 화면에 있는 이모티콘 중 하나 삭제 + if (current.total >= 1 && !visited[current.clipboard][current.total - 1]) { + queue.offer(new Node(current.clipboard, current.total - 1, current.time + 1)); + visited[current.clipboard][current.total + current.clipboard] = true; + } + } + } + + public static class Node{ + int clipboard; + int total; + int time; + + public Node(int clipboard, int total, int time) { + this.clipboard = clipboard; + this.total = total; + this.time = time; + } + } +} From eeb64c411afcde8f0d727acdd7d18aabb54d102c Mon Sep 17 00:00:00 2001 From: changhyeon Date: Thu, 25 Jan 2024 10:01:50 +0900 Subject: [PATCH 06/80] =?UTF-8?q?[6=EC=A3=BC=EC=B0=A8]=20BFS=20BOJ=5F13913?= =?UTF-8?q?=20=ED=99=A9=EC=B0=BD=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/changhyeon/BOJ_13913.java | 84 +++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 src/main/java/changhyeon/BOJ_13913.java diff --git a/src/main/java/changhyeon/BOJ_13913.java b/src/main/java/changhyeon/BOJ_13913.java new file mode 100644 index 0000000..94278b9 --- /dev/null +++ b/src/main/java/changhyeon/BOJ_13913.java @@ -0,0 +1,84 @@ +package changhyeon; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.ArrayDeque; +import java.util.Deque; + +public class BOJ_13913 { + + private static final BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); + private static int N, K, MAX = 100_001, MIN = 0, count; + private static int[] before; + private static boolean[] visited; + + public static void main(String[] args) throws IOException { + String[] line = bufferedReader.readLine().split(" "); + N = Integer.parseInt(line[0]); + K = Integer.parseInt(line[1]); + + visited = new boolean[MAX]; + before = new int[MAX]; + + if (N == K) { + System.out.println(0); + System.out.println(N); + return; + } + + bfs(N); + + Deque deque = new ArrayDeque<>(); + + while (K != N) { + deque.add(K); + K = before[K]; + } + + deque.add(K); + + while (!deque.isEmpty()) { + System.out.print(deque.pollLast() + " "); + } + } + + private static void bfs(final int N) { + Deque deque = new ArrayDeque<>(); + deque.add(N); + visited[N] = true; + int size; + + while (true) { + size = deque.size(); + + for (int i = 0; i < size; i++) { + int number = deque.poll(); + + if (number == K) { + System.out.println(count); + return; + } + + if (number * 2 >= MIN && number * 2 < MAX && !visited[number * 2]) { + deque.add(number * 2); + visited[number * 2] = true; + before[number * 2] = number; + } + + if (number - 1 >= MIN && number - 1 < MAX && !visited[number - 1]) { + deque.add(number - 1); + visited[number - 1] = true; + before[number - 1] = number; + } + + if (number + 1 >= MIN && number + 1 < MAX && !visited[number + 1]) { + deque.add(number + 1); + visited[number + 1] = true; + before[number + 1] = number; + } + } + count++; + } + } +} From bcb3bd6c7f7bc07525e457010d1436d8524bb17f Mon Sep 17 00:00:00 2001 From: changhyeon Date: Thu, 25 Jan 2024 10:33:46 +0900 Subject: [PATCH 07/80] =?UTF-8?q?[6=EC=A3=BC=EC=B0=A8]=20BFS=20BOJ=5F13549?= =?UTF-8?q?=20=ED=99=A9=EC=B0=BD=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/changhyeon/BOJ_13549.java | 70 +++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 src/main/java/changhyeon/BOJ_13549.java diff --git a/src/main/java/changhyeon/BOJ_13549.java b/src/main/java/changhyeon/BOJ_13549.java new file mode 100644 index 0000000..43736f8 --- /dev/null +++ b/src/main/java/changhyeon/BOJ_13549.java @@ -0,0 +1,70 @@ +package changhyeon; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.ArrayDeque; +import java.util.Deque; + +public class BOJ_13549 { + + private static final BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); + private static int N, K, MAX = 100_001, MIN = 0, count; + private static boolean[] visited; + private static int[] time; + + public static void main(String[] args) throws IOException { + String[] line = bufferedReader.readLine().split(" "); + N = Integer.parseInt(line[0]); + K = Integer.parseInt(line[1]); + + visited = new boolean[MAX]; + time = new int[MAX]; + + if (N == K) { + System.out.println(0); + return; + } + + bfs(N); + } + + private static void bfs(final int N) { + Deque deque = new ArrayDeque<>(); + deque.add(N); + visited[N] = true; + int size; + + while (true) { + size = deque.size(); + + for (int i = 0; i < size; i++) { + int number = deque.poll(); + + if (number == K) { + System.out.println(time[number]); + return; + } + + if (number * 2 >= MIN && number * 2 < MAX && !visited[number * 2]) { + deque.add(number * 2); + visited[number * 2] = true; + time[number * 2] = time[number]; + } + + if (number - 1 >= MIN && number - 1 < MAX && !visited[number - 1]) { + deque.add(number - 1); + visited[number - 1] = true; + time[number - 1] = time[number] + 1; + } + + if (number + 1 >= MIN && number + 1 < MAX && !visited[number + 1]) { + deque.add(number + 1); + visited[number + 1] = true; + time[number + 1] = time[number] + 1; + } + } + count++; + } + } +} From 63990d58a1278a95780793c48d6b3fb4e230eccd Mon Sep 17 00:00:00 2001 From: BeomSeogKim Date: Thu, 25 Jan 2024 11:22:20 +0900 Subject: [PATCH 08/80] =?UTF-8?q?[6=EC=A3=BC=EC=B0=A8]=20BFS=20BOJ=5F13549?= =?UTF-8?q?=20=EA=B9=80=EB=B2=94=EC=84=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/tommy/BOJ_13549.java | 48 ++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 src/main/java/tommy/BOJ_13549.java diff --git a/src/main/java/tommy/BOJ_13549.java b/src/main/java/tommy/BOJ_13549.java new file mode 100644 index 0000000..993135e --- /dev/null +++ b/src/main/java/tommy/BOJ_13549.java @@ -0,0 +1,48 @@ +package tommy; + +import java.util.LinkedList; +import java.util.Queue; +import java.util.Scanner; + +public class BOJ_13549 { + static int[] visited = new int[100001]; + + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + int n = sc.nextInt(); + int k = sc.nextInt(); + if (n == k) { + System.out.println(0); + } else { + bfs(n, k); + } + } + + private static void bfs(int n, int k) { + Queue queue = new LinkedList(); + queue.offer(n); + visited[n] = 1; + + while (!queue.isEmpty()) { + int now = queue.poll(); + if (now == k) { + System.out.println(visited[now] - 1); + return; + } + + if (now * 2 <= 100000 && visited[now * 2] == 0) { + queue.offer(now * 2); + visited[now * 2] = visited[now]; + } + if (now - 1 >= 0 && visited[now - 1] == 0) { + queue.offer(now - 1); + visited[now - 1] = visited[now] + 1; + } + if (now + 1 <= 100000 && visited[now + 1] == 0) { + queue.offer(now + 1); + visited[now + 1] = visited[now] + 1; + } + } + } + +} From d111102385ddaf63c16f8e7aca203993a0347f1f Mon Sep 17 00:00:00 2001 From: BeomSeogKim Date: Thu, 25 Jan 2024 18:15:59 +0900 Subject: [PATCH 09/80] =?UTF-8?q?[6=EC=A3=BC=EC=B0=A8]=20BFS=20BOJ=5F1261?= =?UTF-8?q?=20=EA=B9=80=EB=B2=94=EC=84=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/tommy/BOJ_1261.java | 79 +++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 src/main/java/tommy/BOJ_1261.java diff --git a/src/main/java/tommy/BOJ_1261.java b/src/main/java/tommy/BOJ_1261.java new file mode 100644 index 0000000..0347672 --- /dev/null +++ b/src/main/java/tommy/BOJ_1261.java @@ -0,0 +1,79 @@ +package tommy; + +import java.util.PriorityQueue; +import java.util.Scanner; + +public class BOJ_1261 { + static int m; + static int n; + static int[] dx = {-1, 1, 0, 0}; + static int[] dy = {0, 0, -1, 1}; + static int[][] map; + static boolean[][] visited; + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + m = sc.nextInt(); // 4 + n = sc.nextInt(); // 2 + sc.nextLine(); + map = new int[n + 1][m + 1]; + visited = new boolean[n + 1][m + 1]; + for (int i = 1; i <= n; i++) { + String line = sc.nextLine(); + for (int j = 1; j <= m; j++) { + map[i][j] = line.charAt(j - 1) - '0'; + } + } + bfs(1,1); + } + + private static void bfs(int x, int y) { + // priority queue의 경우 Node의 count가 작은 것 부터 우선 탐색을 하기 때문에 보다 빠른 경로를 찾을 수 있다. + PriorityQueue queue = new PriorityQueue<>(); + queue.offer(new Node(x, y, 0)); + visited[x][y] = true; + + while (!queue.isEmpty()) { + Node now = queue.poll(); + + if (now.x == n && now.y == m) { + System.out.println(now.count); + } + + for (int i = 0; i < 4; i++) { + int nx = now.x + dx[i]; + int ny = now.y + dy[i]; + + if (nx < 1 || ny < 1 || nx > n || ny > m){ + continue; + } + + if (!visited[nx][ny] && map[nx][ny] == 0) { + visited[nx][ny] = true; + queue.offer(new Node(nx, ny, now.count)); + } + + if (!visited[nx][ny] && map[nx][ny] == 1) { + visited[nx][ny] = true; + queue.offer(new Node(nx, ny, now.count + 1)); + } + } + } + } + + static class Node implements Comparable{ + int x; + int y; + int count; + + public Node(int x, int y, int count) { + this.x = x; + this.y = y; + this.count = count; + } + + @Override + public int compareTo(Node node) { + return count - node.count; + } + } +} From ac2300666a467076ef34588049f1c0b635f9e260 Mon Sep 17 00:00:00 2001 From: changhyeon Date: Thu, 25 Jan 2024 21:04:28 +0900 Subject: [PATCH 10/80] =?UTF-8?q?[6=EC=A3=BC=EC=B0=A8]=20BFS=20BOJ=5F1261?= =?UTF-8?q?=20=ED=99=A9=EC=B0=BD=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/changhyeon/BOJ_1261.java | 88 ++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 src/main/java/changhyeon/BOJ_1261.java diff --git a/src/main/java/changhyeon/BOJ_1261.java b/src/main/java/changhyeon/BOJ_1261.java new file mode 100644 index 0000000..f092a2a --- /dev/null +++ b/src/main/java/changhyeon/BOJ_1261.java @@ -0,0 +1,88 @@ +package changhyeon; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.PriorityQueue; +import java.util.Queue; +import java.util.Scanner; + +public class BOJ_1261 { + + private static final BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); + private static int[][] map; + private static boolean[][] visited; + private static int[] mx = {0, 0, -1, 1}; + private static int[] my = {-1, 1, 0, 0}; + private static int M, N; + + public static void main(String[] args) throws IOException { + Scanner sc = new Scanner(System.in); + M = sc.nextInt(); + N = sc.nextInt(); + sc.nextLine(); + + visited = new boolean[N + 1][M + 1]; + map = new int[N + 1][M + 1]; + + for (int i = 1; i <= N; i++) { + String line = sc.nextLine(); + for (int j = 1; j <= M; j++) { + map[i][j] = line.charAt(j - 1) - '0'; + } + } + bfs(1, 1); + } + + private static void bfs(final int x, final int y) { + Queue priorityQueue = new PriorityQueue<>(); + priorityQueue.offer(new Node(x, y, 0)); + visited[x][y] = true; + + while (!priorityQueue.isEmpty()) { + Node node = priorityQueue.poll(); + + if (node.x == N && node.y == M) { + System.out.println(node.count); + return; + } + + for (int i = 0; i < 4; i++) { + int dx = mx[i] + node.x; + int dy = my[i] + node.y; + + if (dx < 1 || dy < 1 || dx > N || dy > M) { + continue; + } + + if (!visited[dx][dy] && map[dx][dy] == 1) { + visited[dx][dy] = true; + priorityQueue.offer(new Node(dx, dy, node.count + 1)); + } + + if (!visited[dx][dy] && map[dx][dy] == 0) { + visited[dx][dy] = true; + priorityQueue.offer(new Node(dx, dy, node.count)); + } + } + } + } + + static class Node implements Comparable { + + int x; + int y; + int count; + + public Node(int x, int y, int count) { + this.x = x; + this.y = y; + this.count = count; + } + + @Override + public int compareTo(Node node) { + return count - node.count; + } + } +} From 1ba7b1d4b23aaf2c7499b2b974cf4c770ad826ef Mon Sep 17 00:00:00 2001 From: BeomSeogKim Date: Fri, 26 Jan 2024 10:42:59 +0900 Subject: [PATCH 11/80] =?UTF-8?q?[6=EC=A3=BC=EC=B0=A8]=20=EC=8B=9C?= =?UTF-8?q?=EB=AE=AC=EB=A0=88=EC=9D=B4=EC=85=98=EA=B3=BC=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20BOJ=5F16926=20=EA=B9=80=EB=B2=94=EC=84=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/tommy/BOJ_16926.java | 58 ++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 src/main/java/tommy/BOJ_16926.java diff --git a/src/main/java/tommy/BOJ_16926.java b/src/main/java/tommy/BOJ_16926.java new file mode 100644 index 0000000..a087635 --- /dev/null +++ b/src/main/java/tommy/BOJ_16926.java @@ -0,0 +1,58 @@ +package tommy; + +import java.util.Scanner; + +public class BOJ_16926 { + static int[][] arr; + static int min; // 돌려야 하는 기준 rep 정하기 + static int[] dx = {0, 1, 0, -1}; + static int[] dy = {1, 0, -1, 0}; + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + int N = sc.nextInt(); + int M = sc.nextInt(); + int R = sc.nextInt(); + min = Math.min(N, M); + + arr = new int[N][M]; + for (int i = 0; i < N; i++) { + for (int j = 0; j < M; j++) { + arr[i][j] = sc.nextInt(); + } + } + + for (int r = 0; r < R; r++) { + rotate(N,M); + } + + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < N; i++) { + for (int j = 0; j < M; j++) { + sb.append(arr[i][j]).append(" "); + } + sb.append("\n"); + } + System.out.println(sb); + } + + private static void rotate(int N, int M) { + for (int t = 0; t < min / 2; t++) { + int x = t; + int y = t; + int idx = 0; + int temp = arr[t][t]; + while (idx < 4) { + int nx = x + dx[idx]; + int ny = y + dy[idx]; + if (nx >= t && nx < N - t && ny >= t && ny < M - t) { + arr[x][y] = arr[nx][ny]; + x = nx; + y = ny; + } else { + idx++; + } + } + arr[t + 1][t] = temp; + } + } +} From f22b630b143694b31d996733d097f6e857384a43 Mon Sep 17 00:00:00 2001 From: BeomSeogKim Date: Fri, 26 Jan 2024 18:27:43 +0900 Subject: [PATCH 12/80] =?UTF-8?q?[6=EC=A3=BC=EC=B0=A8]=20=EC=8B=9C?= =?UTF-8?q?=EB=AE=AC=EB=A0=88=EC=9D=B4=EC=85=98=EA=B3=BC=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20BOJ=5F16935=20=EA=B9=80=EB=B2=94=EC=84=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/tommy/BOJ_16935.java | 171 +++++++++++++++++++++++++++++ 1 file changed, 171 insertions(+) create mode 100644 src/main/java/tommy/BOJ_16935.java diff --git a/src/main/java/tommy/BOJ_16935.java b/src/main/java/tommy/BOJ_16935.java new file mode 100644 index 0000000..cce3c80 --- /dev/null +++ b/src/main/java/tommy/BOJ_16935.java @@ -0,0 +1,171 @@ +package tommy; + +import java.util.Scanner; + +public class BOJ_16935 { + static int N; + static int M; + static int[][] arr; + static int[][] transArr; + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + N = sc.nextInt(); + M = sc.nextInt(); + int R = sc.nextInt(); + + arr = new int[N][M]; + for (int i = 0; i < N; i++) { + for (int j = 0; j < M; j++) { + arr[i][j] = sc.nextInt(); + } + } + + for (int r = 0; r < R; r++) { + int operator = sc.nextInt(); + switch (operator) { + case 1 : + solution1(); + break; + case 2: + solution2(); + break; + case 3 : + solution3(); + break; + case 4 : + solution4(); + break; + case 5 : + solution5(); + break; + case 6: + solution6(); + break; + } + } + + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < N; i++) { + for (int j = 0; j < M; j++) { + sb.append(arr[i][j]).append(" "); + } + sb.append("\n"); + } + System.out.println(sb); + } + + // 상하 반전 + static void solution1() { + transArr = new int[N][M]; + for (int i = 0; i < N; i++) { + for (int j = 0; j < M; j++) { + transArr[N - 1 - i][j] = arr[i][j]; + } + } + arr = transArr; + } + // 좌우 반전 + static void solution2() { + transArr = new int[N][M]; + for (int i = 0; i < N; i++) { + for (int j = 0; j < M; j++) { + transArr[i][M - 1 - j] = arr[i][j]; + } + } + arr = transArr; + } + // 오른쪽 90도 회전 + static void solution3() { + transArr = new int[M][N]; + for (int i = 0; i < N; i++) { + for (int j = 0; j < M; j++) { + transArr[j][N - 1 - i] = arr[i][j]; + } + } + // 크기 변환 + int temp = N; + N = M; + M = temp; + arr = transArr; + } + + static void solution4() { + transArr = new int[M][N]; + for (int i = 0; i < N; i++) { + for (int j = 0; j < M; j++) { + transArr[M - 1 - j][i] = arr[i][j]; + } + } + // 크기 변환 + int temp = N; + N = M; + M = temp; + arr = transArr; + } + static void solution5() { + transArr = new int[N][M]; + int N_mean = N / 2; + int M_mean = M / 2; + + // 1 -> 2 + for (int i = 0; i < N_mean; i++) { + for (int j = 0; j < M_mean; j++) { + transArr[i][M_mean + j] = arr[i][j]; + } + } + // 2 -> 3 + for (int i = 0; i < N_mean; i++) { + for (int j = M_mean; j < M; j++) { + transArr[N_mean + i][j] = arr[i][j]; + } + } + // 3 -> 4 + for (int i = N_mean; i < N; i++) { + for (int j = M_mean; j < M; j++) { + transArr[i][j - M_mean] = arr[i][j]; + } + } + // 4 -> 1 + for (int i = N_mean; i < N; i++) { + for (int j = 0; j < M_mean; j++) { + transArr[i - N_mean][j] = arr[i][j]; + } + } + + arr = transArr; + } + + static void solution6() { + transArr = new int[N][M]; + int N_mean = N / 2; + int M_mean = M / 2; + + // 1 -> 4 + for (int i = 0; i < N_mean; i++) { + for (int j = 0; j < M_mean; j++) { + transArr[i + N_mean][j] = arr[i][j]; + } + } + // 4 -> 3 + for (int i = N_mean; i < N; i++) { + for (int j = 0; j < M_mean; j++) { + transArr[i][j + M_mean] = arr[i][j]; + } + } + // 3 -> 2 + for (int i = N_mean; i < N; i++) { + for (int j = M_mean; j < M; j++) { + transArr[i - N_mean][j] = arr[i][j]; + } + } + // 2 -> 1 + for (int i = 0; i < N_mean; i++) { + for (int j = M_mean; j < M; j++) { + transArr[i][j - M_mean] = arr[i][j]; + } + } + + arr = transArr; + } + +} From fe339f838cbfa09e6d387e96fb776729adcd1901 Mon Sep 17 00:00:00 2001 From: BeomSeogKim Date: Mon, 29 Jan 2024 11:15:23 +0900 Subject: [PATCH 13/80] =?UTF-8?q?[7=EC=A3=BC=EC=B0=A8]=20=EC=8B=9C?= =?UTF-8?q?=EB=AE=AC=EB=A0=88=EC=9D=B4=EC=85=98=EA=B3=BC=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20BOJ=5F16927=20=EA=B9=80=EB=B2=94=EC=84=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/tommy/BOJ_16927.java | 64 ++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 src/main/java/tommy/BOJ_16927.java diff --git a/src/main/java/tommy/BOJ_16927.java b/src/main/java/tommy/BOJ_16927.java new file mode 100644 index 0000000..e405172 --- /dev/null +++ b/src/main/java/tommy/BOJ_16927.java @@ -0,0 +1,64 @@ +package tommy; + +import java.util.Scanner; + +public class BOJ_16927 { + static int N, M; + static int[][] arr; + static int[] dx = {0, 1, 0, -1}; + static int[] dy = {1, 0, -1, 0}; + + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + N = sc.nextInt(); + M = sc.nextInt(); + int R = sc.nextInt(); + int min = Math.min(M, N); + + arr = new int[N][M]; + for (int i = 0; i < N; i++) { + for (int j = 0; j < M; j++) { + arr[i][j] = sc.nextInt(); + } + } + + int nN = N; + int nM = M; + for (int i = 0; i < min / 2; i++) { + int nR = R % (2 * nN + 2 * nM - 4); + for (int r = 0; r < nR; r++) { + rotation(i); + } + nN -= 2; + nM -= 2; + } + + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < N; i++) { + for (int j = 0; j < M; j++) { + sb.append(arr[i][j]).append(" "); + } + sb.append("\n"); + } + System.out.println(sb); + } + + private static void rotation(int start) { + int x = start; + int y = start; + int index = 0; + int temp = arr[x][y]; + while (index < 4) { + int nx = x + dx[index]; + int ny = y + dy[index]; + if (nx >= start && nx < N - start && ny >= start && ny < M - start) { + arr[x][y] = arr[nx][ny]; + x = nx; + y = ny; + } else { + index++; + } + } + arr[start + 1][start] = temp; + } +} From b748943e0cfbda91df3aafc987f2800f0399abf3 Mon Sep 17 00:00:00 2001 From: BeomSeogKim Date: Wed, 31 Jan 2024 15:41:42 +0900 Subject: [PATCH 14/80] =?UTF-8?q?[7=EC=A3=BC=EC=B0=A8]=20=EC=8B=9C?= =?UTF-8?q?=EB=AE=AC=EB=A0=88=EC=9D=B4=EC=85=98=EA=B3=BC=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20BOJ=5F14499=20=EA=B9=80=EB=B2=94=EC=84=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/tommy/BOJ_14499.java | 89 ++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 src/main/java/tommy/BOJ_14499.java diff --git a/src/main/java/tommy/BOJ_14499.java b/src/main/java/tommy/BOJ_14499.java new file mode 100644 index 0000000..2740402 --- /dev/null +++ b/src/main/java/tommy/BOJ_14499.java @@ -0,0 +1,89 @@ +package tommy; + +import java.util.Scanner; + +public class BOJ_14499 { + static int N, M, x, y; + static int[][] map; + static int[] dice = new int[7]; + // 동 서 북 남 + static int[] dx = {0, 0, -1, 1}; + static int[] dy = {1, -1, 0, 0}; + static StringBuilder sb = new StringBuilder(); + + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + N = sc.nextInt(); + M = sc.nextInt(); + x = sc.nextInt(); + y = sc.nextInt(); + int K = sc.nextInt(); + + map = new int[N][M]; + for (int i = 0; i < N; i++) { + for (int j = 0; j < M; j++) { + map[i][j] = sc.nextInt(); + } + } + + for (int k = 0; k < K; k++) { + int direction = sc.nextInt() - 1; + int nx = x + dx[direction]; + int ny = y + dy[direction]; + if (nx < 0 || ny < 0 || nx >= N || ny >= M) { + continue; + } else { + rotation(nx, ny, direction); + } + x = nx; + y = ny; + } + + System.out.println(sb); + } + + private static void rotation(int nx, int ny, int direction) { + int temp; + switch (direction) { + // 동 + case 0: + temp = dice[1]; + dice[1] = dice[4]; + dice[4] = dice[6]; + dice[6] = dice[3]; + dice[3] = temp; + break; + // 서 + case 1: + temp = dice[1]; + dice[1] = dice[3]; + dice[3] = dice[6]; + dice[6] = dice[4]; + dice[4] = temp; + break; + // 북 + case 2: + temp = dice[1]; + dice[1] = dice[5]; + dice[5] = dice[6]; + dice[6] = dice[2]; + dice[2] = temp; + break; + // 남 + case 3: + temp = dice[1]; + dice[1] = dice[2]; + dice[2] = dice[6]; + dice[6] = dice[5]; + dice[5] = temp; + break; + } + sb.append(dice[1]).append("\n"); + if (map[nx][ny] == 0) { + map[nx][ny] = dice[6]; + } else { + dice[6] = map[nx][ny]; + map[nx][ny] = 0; + } + } +} From cf6d9d9dc64f8bd32bbceaab685c5608237ff690 Mon Sep 17 00:00:00 2001 From: BeomSeogKim Date: Thu, 1 Feb 2024 11:48:54 +0900 Subject: [PATCH 15/80] =?UTF-8?q?[7=EC=A3=BC=EC=B0=A8]=20=EC=8B=9C?= =?UTF-8?q?=EB=AE=AC=EB=A0=88=EC=9D=B4=EC=85=98=EA=B3=BC=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20BOJ=5F14890=20=EA=B9=80=EB=B2=94=EC=84=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/tommy/BOJ_14890.java | 77 ++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 src/main/java/tommy/BOJ_14890.java diff --git a/src/main/java/tommy/BOJ_14890.java b/src/main/java/tommy/BOJ_14890.java new file mode 100644 index 0000000..51666d1 --- /dev/null +++ b/src/main/java/tommy/BOJ_14890.java @@ -0,0 +1,77 @@ +package tommy; + +import java.util.Scanner; + +public class BOJ_14890 { + static int N; + static int L; + static int[][] map; + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + N = sc.nextInt(); + L = sc.nextInt(); + + map = new int[N][N]; + for (int i = 0; i < N; i++) { + for (int j = 0; j < N; j++) { + map[i][j] = sc.nextInt(); + } + } + + int answer = 0; + for (int i = 0; i < N; i++) { + if (checkRow(i)) answer++; + if (checkCol(i)) answer++; + } + + System.out.println(answer); + } + + private static boolean checkRow(int row) { + boolean[] isInstalled = new boolean[N]; + + for (int i = 0; i < N - 1; i++) { + int diff = map[row][i] - map[row][i + 1]; + if (diff < -1 || diff > 1) return false; + else if (diff == -1) { // 경사로가 높아지는 경우 + for (int j = 0; j < L; j++) { + // 범위를 벗어나거나 이미 설치한 경우 + if (i - j < 0 || isInstalled[i - j]) return false; + if (map[row][i] != map[row][i - j]) return false; + isInstalled[i - j] = true; + } + } else if (diff == 1) { // 경사로가 낮아지는 경우 + for (int j = 1; j <= L; j++) { + if (i + j >= N || isInstalled[i + j]) return false; + if (map[row][i] - 1 != map[row][i + j]) return false; + isInstalled[i + j] = true; + } + } + } + return true; + } + + private static boolean checkCol(int col) { + boolean[] isInstalled = new boolean[N]; + + for (int i = 0; i < N - 1; i++) { + int diff = map[i][col] - map[i + 1][col]; + + if (diff < -1 || diff > 1) return false; + else if (diff == -1) { // 경사로가 높아지는 경우 + for (int j = 0; j < L; j++) { + if (i - j < 0 || isInstalled[i - j]) return false; + if (map[i][col] != map[i - j][col]) return false; + isInstalled[i - j] = true; + } + } else if (diff == 1) { // 경사로가 낮아지는 경우 + for (int j = 1; j <= L; j++) { + if (i + j >= N || isInstalled[i+j]) return false; + if (map[i][col] -1 != map[i + j][col]) return false; + isInstalled[i + j] = true; + } + } + } + return true; + } +} From 80e00c917f7bf784d3f99f992d9f458b6e9f8b31 Mon Sep 17 00:00:00 2001 From: BeomSeogKim Date: Mon, 5 Feb 2024 11:00:31 +0900 Subject: [PATCH 16/80] =?UTF-8?q?[8=EC=A3=BC=EC=B0=A8]=20=EC=8B=9C?= =?UTF-8?q?=EB=AE=AC=EB=A0=88=EC=9D=B4=EC=85=98=EA=B3=BC=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20BOJ=5F15662=20=EA=B9=80=EB=B2=94=EC=84=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/tommy/BOJ_15662.java | 67 ++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 src/main/java/tommy/BOJ_15662.java diff --git a/src/main/java/tommy/BOJ_15662.java b/src/main/java/tommy/BOJ_15662.java new file mode 100644 index 0000000..bf6db24 --- /dev/null +++ b/src/main/java/tommy/BOJ_15662.java @@ -0,0 +1,67 @@ +package tommy; + +import java.util.Scanner; + +public class BOJ_15662 { + static int T; // 톱니 바퀴의 수 + static int[][] chain; + static boolean[] visited; + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + T = sc.nextInt(); + + // Initializing Chain + chain = new int[T][8]; // 날은 8개 + for (int i = 0; i < T; i++) { + String tmp = sc.next(); + for (int j = 0; j < tmp.length(); j++) { + chain[i][j] = tmp.charAt(j) - '0'; + } + } + + int K = sc.nextInt(); + for (int k = 0; k < K; k++) { + int chainNum = sc.nextInt() - 1; + int direction = sc.nextInt(); + visited = new boolean[T]; + compute(chainNum, direction); + } + + int cnt = 0; + for (int i = 0; i < T; i++) { + if (chain[i][0] == 1) { + cnt++; + } + } + System.out.println(cnt); + } + + private static void compute(int chainNum, int direction) { + visited[chainNum] = true; + rotate(chainNum, direction); + + if (chainNum - 1 >= 0 && !visited[chainNum - 1] && chain[chainNum - 1][2] != chain[chainNum][6 + direction]) { + compute(chainNum - 1, direction * -1); + } + if (chainNum + 1 < T && !visited[chainNum + 1] && chain[chainNum + 1][6] != chain[chainNum][2 + direction]) { + compute(chainNum + 1, direction * -1); + } + } + + private static void rotate(int chainNum, int direction) { + if (direction == 1) { + int tmp = chain[chainNum][7]; + for (int i = 7; i >= 1; i--) { + chain[chainNum][i] = chain[chainNum][i - 1]; + } + chain[chainNum][0] = tmp; + } else { + int tmp = chain[chainNum][0]; + for (int i = 0; i < 7; i++) { + chain[chainNum][i] = chain[chainNum][i + 1]; + } + chain[chainNum][7] = tmp; + } + } + +} From e917d61beba818f481de449999224ebe1f9889bf Mon Sep 17 00:00:00 2001 From: changhyeon Date: Mon, 5 Feb 2024 11:49:33 +0900 Subject: [PATCH 17/80] =?UTF-8?q?[8=EC=A3=BC=EC=B0=A8]=20=EC=8B=9C?= =?UTF-8?q?=EB=AE=AC=EB=A0=88=EC=9D=B4=EC=85=98=EA=B3=BC=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20BOj=5F15662=20=ED=99=A9=EC=B0=BD=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/changhyeon/BOJ_14226.java | 35 +++++++++ src/main/java/changhyeon/BOJ_15662.java | 99 +++++++++++++++++++++++++ 2 files changed, 134 insertions(+) create mode 100644 src/main/java/changhyeon/BOJ_14226.java create mode 100644 src/main/java/changhyeon/BOJ_15662.java diff --git a/src/main/java/changhyeon/BOJ_14226.java b/src/main/java/changhyeon/BOJ_14226.java new file mode 100644 index 0000000..a3629fc --- /dev/null +++ b/src/main/java/changhyeon/BOJ_14226.java @@ -0,0 +1,35 @@ +package changhyeon; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + + +/* +영선이는 매우 기쁘기 때문에, 효빈이에게 스마일 이모티콘을 S개 보내려고 한다. + +영선이는 이미 화면에 이모티콘 1개를 입력했다. 이제, 다음과 같은 3가지 연산만 사용해서 이모티콘을 S개 만들어 보려고 한다. + +화면에 있는 이모티콘을 모두 복사해서 클립보드에 저장한다. +클립보드에 있는 모든 이모티콘을 화면에 붙여넣기 한다. +화면에 있는 이모티콘 중 하나를 삭제한다. +모든 연산은 1초가 걸린다. 또, 클립보드에 이모티콘을 복사하면 이전에 클립보드에 있던 내용은 덮어쓰기가 된다. 클립보드가 비어있는 상태에는 붙여넣기를 할 수 없으며, 일부만 클립보드에 복사할 수는 없다. 또한, 클립보드에 있는 이모티콘 중 일부를 삭제할 수 없다. 화면에 이모티콘을 붙여넣기 하면, 클립보드에 있는 이모티콘의 개수가 화면에 추가된다. + +영선이가 S개의 이모티콘을 화면에 만드는데 걸리는 시간의 최솟값을 구하는 프로그램을 작성하시오. + */ + +public class BOJ_14226 { + + private static final BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); + private static int S; + + public static void main(String[] args) throws IOException { + S = Integer.parseInt(bufferedReader.readLine()); + + bfs(); + } + + private static void bfs() { + + } +} diff --git a/src/main/java/changhyeon/BOJ_15662.java b/src/main/java/changhyeon/BOJ_15662.java new file mode 100644 index 0000000..eee3c34 --- /dev/null +++ b/src/main/java/changhyeon/BOJ_15662.java @@ -0,0 +1,99 @@ +package changhyeon; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.Arrays; + +public class BOJ_15662 { + + private static final BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); + private static int count, GEAR_MAX_NUMBER = 8, LEFT_GEAR = 6, RIGHT_GEAR = 2, LEFT_DIRECTION = -1, RIGHT_DIRECTION = 1; + private static int[][] gears, method; + private static int rotationCount; + private static boolean[] visited; + + public static void main(String[] args) throws IOException { + count = Integer.parseInt(bufferedReader.readLine()); + gears = new int[count + 1][GEAR_MAX_NUMBER]; + + for (int i = 1; i <= count; i++) { + gears[i] = Arrays.stream(bufferedReader.readLine().split("")) + .mapToInt(Integer::parseInt) + .toArray(); + } + + rotationCount = Integer.parseInt(bufferedReader.readLine()); + + method = new int[rotationCount][2]; + + for (int i = 0; i < rotationCount; i++) { + method[i] = Arrays.stream(bufferedReader.readLine().split(" ")) + .mapToInt(Integer::parseInt) + .toArray(); + } + + for (int i = 0; i < rotationCount; i++) { + int gearNumber = method[i][0]; // 톱니바퀴 번호 + int direction = method[i][1]; // 방향 + + visited = new boolean[count + 1]; + process(gearNumber, direction); + } + + int cnt = 0; + for (int i = 1; i <= count; i++) { + if (gears[i][0] == 1) { + cnt++; + } + } + + System.out.println(cnt); + } + + private static void process(final int gearNumber, final int direction) { + visited[gearNumber] = true; + + changeDirection(gearNumber, direction); + + goLeftGear(gearNumber, direction); + goRightGear(gearNumber, direction); + } + + private static void goLeftGear(final int gearNumber, final int direction) { + if (gearNumber - 1 >= 1 && !visited[gearNumber - 1] + && gears[gearNumber - 1][RIGHT_GEAR] != gears[gearNumber][LEFT_GEAR + direction]) { + process(gearNumber - 1, direction * -1); + } + } + + private static void goRightGear(final int gearNumber, final int direction) { + if (gearNumber + 1 <= count && !visited[gearNumber + 1] + && gears[gearNumber + 1][LEFT_GEAR] != gears[gearNumber][RIGHT_GEAR + direction]) { + process(gearNumber + 1, direction * -1); + } + } + + private static void changeDirection(final int gearNumber, final int direction) { + if (direction == LEFT_DIRECTION) { + int zeroTemp = gears[gearNumber][0]; + + for (int i = 0; i < GEAR_MAX_NUMBER - 1; i++) { + gears[gearNumber][i] = gears[gearNumber][i + 1]; + } + + gears[gearNumber][7] = zeroTemp; + return; + } + + if (direction == RIGHT_DIRECTION) { + int lastTemp = gears[gearNumber][GEAR_MAX_NUMBER - 1]; + + for (int i = GEAR_MAX_NUMBER - 1; i > 0; i--) { + gears[gearNumber][i] = gears[gearNumber][i - 1]; + } + + gears[gearNumber][0] = lastTemp; + } + } +} From 312030672897e4f47459f96c7f0ad7e650425161 Mon Sep 17 00:00:00 2001 From: changhyeon Date: Mon, 5 Feb 2024 11:51:37 +0900 Subject: [PATCH 18/80] =?UTF-8?q?[8=EC=A3=BC=EC=B0=A8]=20=EC=8B=9C?= =?UTF-8?q?=EB=AE=AC=EB=A0=88=EC=9D=B4=EC=85=98=EA=B3=BC=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20BOj=5F15662=20=EC=88=98=EC=A0=95=20=ED=99=A9?= =?UTF-8?q?=EC=B0=BD=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/changhyeon/BOJ_14226.java | 35 ------------------------- 1 file changed, 35 deletions(-) delete mode 100644 src/main/java/changhyeon/BOJ_14226.java diff --git a/src/main/java/changhyeon/BOJ_14226.java b/src/main/java/changhyeon/BOJ_14226.java deleted file mode 100644 index a3629fc..0000000 --- a/src/main/java/changhyeon/BOJ_14226.java +++ /dev/null @@ -1,35 +0,0 @@ -package changhyeon; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; - - -/* -영선이는 매우 기쁘기 때문에, 효빈이에게 스마일 이모티콘을 S개 보내려고 한다. - -영선이는 이미 화면에 이모티콘 1개를 입력했다. 이제, 다음과 같은 3가지 연산만 사용해서 이모티콘을 S개 만들어 보려고 한다. - -화면에 있는 이모티콘을 모두 복사해서 클립보드에 저장한다. -클립보드에 있는 모든 이모티콘을 화면에 붙여넣기 한다. -화면에 있는 이모티콘 중 하나를 삭제한다. -모든 연산은 1초가 걸린다. 또, 클립보드에 이모티콘을 복사하면 이전에 클립보드에 있던 내용은 덮어쓰기가 된다. 클립보드가 비어있는 상태에는 붙여넣기를 할 수 없으며, 일부만 클립보드에 복사할 수는 없다. 또한, 클립보드에 있는 이모티콘 중 일부를 삭제할 수 없다. 화면에 이모티콘을 붙여넣기 하면, 클립보드에 있는 이모티콘의 개수가 화면에 추가된다. - -영선이가 S개의 이모티콘을 화면에 만드는데 걸리는 시간의 최솟값을 구하는 프로그램을 작성하시오. - */ - -public class BOJ_14226 { - - private static final BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); - private static int S; - - public static void main(String[] args) throws IOException { - S = Integer.parseInt(bufferedReader.readLine()); - - bfs(); - } - - private static void bfs() { - - } -} From b3e2b2b8e9014a7dc7dc90a0127d4ae258304204 Mon Sep 17 00:00:00 2001 From: changhyeon Date: Mon, 5 Feb 2024 12:05:02 +0900 Subject: [PATCH 19/80] =?UTF-8?q?[8=EC=A3=BC=EC=B0=A8]=20=EC=8B=9C?= =?UTF-8?q?=EB=AE=AC=EB=A0=88=EC=9D=B4=EC=85=98=EA=B3=BC=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20BOJ=5F14053=20=ED=99=A9=EC=B0=BD=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/changhyeon/BOJ_14053.java | 81 +++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 src/main/java/changhyeon/BOJ_14053.java diff --git a/src/main/java/changhyeon/BOJ_14053.java b/src/main/java/changhyeon/BOJ_14053.java new file mode 100644 index 0000000..53e72d3 --- /dev/null +++ b/src/main/java/changhyeon/BOJ_14053.java @@ -0,0 +1,81 @@ +package changhyeon; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.StringTokenizer; + +public class BOJ_14053 { + + private static final BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); + private static boolean[][] visited; + private static int[][] map; + private static int x, y; + private static int count; + private static final int[] mx = {-1, 0, 1, 0}; + private static final int[] my = {0, 1, 0, -1}; + + public static void main(String[] args) throws IOException { + StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine(), " "); + + x = Integer.parseInt(stringTokenizer.nextToken()); + y = Integer.parseInt(stringTokenizer.nextToken()); + + stringTokenizer = new StringTokenizer(bufferedReader.readLine(), " "); + + int startX = Integer.parseInt(stringTokenizer.nextToken()); + int startY = Integer.parseInt(stringTokenizer.nextToken()); + int startDirection = Integer.parseInt(stringTokenizer.nextToken()); + + map = new int[x][y]; + visited = new boolean[x][y]; + + for (int i = 0; i < x; i++) { + stringTokenizer = new StringTokenizer(bufferedReader.readLine(), " "); + for (int j = 0; j < y; j++) { + map[i][j] = Integer.parseInt(stringTokenizer.nextToken()); + } + } + + count++; + visited[startX][startY] = true; + + dfs(startX, startY, startDirection); + + System.out.println(count); + } + + public static void dfs(int curX, int curY, int nowDirection) { + int i = 1; + for (; i <= 4; i++) { + int newDirection = (nowDirection - i < 0) ? nowDirection - i + 4 : nowDirection - i; + int nextX = curX + mx[newDirection]; + int nextY = curY + my[newDirection]; + + if ((nextX > 0 && nextX < x - 1) + && (nextY > 0 && nextY < y - 1) + && map[nextX][nextY] == 0 + && !visited[nextX][nextY] + ) { + count++; + visited[nextX][nextY] = true; + dfs(nextX, nextY, newDirection); + + break; + } + } + + if (i == 5) { + int oppoDirection = (nowDirection + 2 > 3) ? nowDirection - 2 : nowDirection + 2; + int nextX = curX + mx[oppoDirection]; + int nextY = curY + my[oppoDirection]; + + if ((nextX > 0 && nextX < x - 1) + && (nextY > 0 && nextY < y - 1) + && map[nextX][nextY] == 0 + ) { + dfs(nextX, nextY, nowDirection); + } + } + } +} From 6ac45f0e933f298baf4a251b14b1a05add821207 Mon Sep 17 00:00:00 2001 From: changhyeon Date: Mon, 5 Feb 2024 12:12:31 +0900 Subject: [PATCH 20/80] =?UTF-8?q?docs:=20README=20=EC=97=85=EB=8D=B0?= =?UTF-8?q?=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/README.md b/README.md index fe3bd72..bed38d0 100644 --- a/README.md +++ b/README.md @@ -148,6 +148,35 @@ algorithm-study [[실버2] DFS와 BFS](https://www.acmicpc.net/problem/1260)
[[실버2] 연결 요소의 개수](https://www.acmicpc.net/problem/11724)
+### 6주차 + +#### 큐와 그래프 + +[[실버1] 단지번호붙이기](https://www.acmicpc.net/problem/2667)
+[[실버1] 미로 탐색](https://www.acmicpc.net/problem/2178)
+[[실버1] 나이트의 이동](https://www.acmicpc.net/problem/7562)
+ +#### BFS + +[[실버1] 숨바꼭질](https://www.acmicpc.net/problem/1697)
+[[골드4] 숨바꼭질 4](https://www.acmicpc.net/problem/13913)
+[[골드4] 이모티콘](https://www.acmicpc.net/problem/14226)
+[[골드5] 숨바꼭질3](https://www.acmicpc.net/problem/13549)
+[[골드4] 알고스팟](https://www.acmicpc.net/problem/1261)
+ +#### 시뮬레이션과 구현 + +[[골드5] 배열 돌리기 3](https://www.acmicpc.net/problem/16935)
+[[실버1] 배열 돌리기 1](https://www.acmicpc.net/problem/16926)
+ +### 7주차 + +#### 시뮬레이션과 구현 + +[[골드5] 배열 돌리기 2](https://www.acmicpc.net/problem/16927)
+[[골드4] 주사위 굴리기](https://www.acmicpc.net/problem/14499)
+[[골드3] 경사로](https://www.acmicpc.net/problem/14890)
+ ## 참고 https://code.plus/course/51 From 9e370bee2bf734a648b7ab9eac5cf5d5d2730d36 Mon Sep 17 00:00:00 2001 From: changhyeon Date: Mon, 5 Feb 2024 12:14:28 +0900 Subject: [PATCH 21/80] =?UTF-8?q?docs:=20README=20=EC=97=85=EB=8D=B0?= =?UTF-8?q?=EC=9D=B4=ED=8A=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 66 +++++++++++++++++++++++++++---------------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index bed38d0..5032260 100644 --- a/README.md +++ b/README.md @@ -119,63 +119,63 @@ algorithm-study #### DP -[[실버2] 부분수열의 합](https://www.acmicpc.net/problem/1182)
-[[실버3] 1로 만들기](https://www.acmicpc.net/problem/1463)
-[[실버3] 2xn 타일링](https://www.acmicpc.net/problem/11726)
-[[실버3] 2xn 타일링(2)](https://www.acmicpc.net/problem/11727)
-[[실버3] 1,2,3 더하기](https://www.acmicpc.net/problem/9095)
-[[실버1] 카드 구매하기](https://www.acmicpc.net/problem/11052)
-[[실버1] 카드 구매하기2](https://www.acmicpc.net/problem/16194)
-[[실버2] 1,2,3 더하기 5](https://www.acmicpc.net/problem/15990)
-[[실버1] 쉬운 계단 수](https://www.acmicpc.net/problem/10844)
-[[실버2] 가장 긴 증가하는 부분 수열](https://www.acmicpc.net/problem/11053)
+[24. [실버2] 부분수열의 합](https://www.acmicpc.net/problem/1182)
+[25. [실버3] 1로 만들기](https://www.acmicpc.net/problem/1463)
+[26. [실버3] 2xn 타일링](https://www.acmicpc.net/problem/11726)
+[27. [실버3] 2xn 타일링(2)](https://www.acmicpc.net/problem/11727)
+[28. [실버3] 1,2,3 더하기](https://www.acmicpc.net/problem/9095)
+[29. [실버1] 카드 구매하기](https://www.acmicpc.net/problem/11052)
+[30. [실버1] 카드 구매하기2](https://www.acmicpc.net/problem/16194)
+[31. [실버2] 1,2,3 더하기 5](https://www.acmicpc.net/problem/15990)
+[32. [실버1] 쉬운 계단 수](https://www.acmicpc.net/problem/10844)
+[33. [실버2] 가장 긴 증가하는 부분 수열](https://www.acmicpc.net/problem/11053)
### 5주차 #### DP -[[실버2] 연속 합](https://www.acmicpc.net/problem/1912)
-[[실버2] 제곱수의 합](https://www.acmicpc.net/problem/1699)
-[[실버2] 1,2,3 더하기 3](https://www.acmicpc.net/problem/15988)
-[[실버1] RGB거리](https://www.acmicpc.net/problem/1149)
-[[실버1] 동물원](https://www.acmicpc.net/problem/1309)
-[[실버1] 오르막 수](https://www.acmicpc.net/problem/11057)
+[34. [실버2] 연속 합](https://www.acmicpc.net/problem/1912)
+[35. [실버2] 제곱수의 합](https://www.acmicpc.net/problem/1699)
+[36. [실버2] 1,2,3 더하기 3](https://www.acmicpc.net/problem/15988)
+[37. [실버1] RGB거리](https://www.acmicpc.net/problem/1149)
+[38. [실버1] 동물원](https://www.acmicpc.net/problem/1309)
+[39. [실버1] 오르막 수](https://www.acmicpc.net/problem/11057)
#### 큐와 그래프 -[[실버4] 큐](https://www.acmicpc.net/problem/10845)
-[[실버4] 덱](https://www.acmicpc.net/problem/10866)
-[[실버2] DFS와 BFS](https://www.acmicpc.net/problem/1260)
-[[실버2] 연결 요소의 개수](https://www.acmicpc.net/problem/11724)
+[40. [실버4] 큐](https://www.acmicpc.net/problem/10845)
+[41. [실버4] 덱](https://www.acmicpc.net/problem/10866)
+[42. [실버2] DFS와 BFS](https://www.acmicpc.net/problem/1260)
+[43. [실버2] 연결 요소의 개수](https://www.acmicpc.net/problem/11724)
### 6주차 #### 큐와 그래프 -[[실버1] 단지번호붙이기](https://www.acmicpc.net/problem/2667)
-[[실버1] 미로 탐색](https://www.acmicpc.net/problem/2178)
-[[실버1] 나이트의 이동](https://www.acmicpc.net/problem/7562)
+[44. [실버1] 단지번호붙이기](https://www.acmicpc.net/problem/2667)
+[45. [실버1] 미로 탐색](https://www.acmicpc.net/problem/2178)
+[46. [실버1] 나이트의 이동](https://www.acmicpc.net/problem/7562)
#### BFS -[[실버1] 숨바꼭질](https://www.acmicpc.net/problem/1697)
-[[골드4] 숨바꼭질 4](https://www.acmicpc.net/problem/13913)
-[[골드4] 이모티콘](https://www.acmicpc.net/problem/14226)
-[[골드5] 숨바꼭질3](https://www.acmicpc.net/problem/13549)
-[[골드4] 알고스팟](https://www.acmicpc.net/problem/1261)
+[47. [실버1] 숨바꼭질](https://www.acmicpc.net/problem/1697)
+[48. [골드4] 숨바꼭질 4](https://www.acmicpc.net/problem/13913)
+[49. [골드4] 이모티콘](https://www.acmicpc.net/problem/14226)
+[50. [골드5] 숨바꼭질3](https://www.acmicpc.net/problem/13549)
+[51. [골드4] 알고스팟](https://www.acmicpc.net/problem/1261)
#### 시뮬레이션과 구현 -[[골드5] 배열 돌리기 3](https://www.acmicpc.net/problem/16935)
-[[실버1] 배열 돌리기 1](https://www.acmicpc.net/problem/16926)
+[52. [골드5] 배열 돌리기 3](https://www.acmicpc.net/problem/16935)
+[53. [실버1] 배열 돌리기 1](https://www.acmicpc.net/problem/16926)
### 7주차 #### 시뮬레이션과 구현 -[[골드5] 배열 돌리기 2](https://www.acmicpc.net/problem/16927)
-[[골드4] 주사위 굴리기](https://www.acmicpc.net/problem/14499)
-[[골드3] 경사로](https://www.acmicpc.net/problem/14890)
+[54. [골드5] 배열 돌리기 2](https://www.acmicpc.net/problem/16927)
+[55. [골드4] 주사위 굴리기](https://www.acmicpc.net/problem/14499)
+[56. [골드3] 경사로](https://www.acmicpc.net/problem/14890)
## 참고 From 266272b730da629ba83d8eacb9165c200340e8c9 Mon Sep 17 00:00:00 2001 From: BeomSeogKim Date: Tue, 6 Feb 2024 11:57:02 +0900 Subject: [PATCH 22/80] =?UTF-8?q?[8=EC=A3=BC=EC=B0=A8=20=EC=8B=9C=EB=AE=AC?= =?UTF-8?q?=EB=A0=88=EC=9D=B4=EC=85=98=EA=B3=BC=20=EA=B5=AC=ED=98=84=20BOJ?= =?UTF-8?q?=5F2290=20=EA=B9=80=EB=B2=94=EC=84=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/tommy/BOJ_2290.java | 172 ++++++++++++++++++++++++++++++ 1 file changed, 172 insertions(+) create mode 100644 src/main/java/tommy/BOJ_2290.java diff --git a/src/main/java/tommy/BOJ_2290.java b/src/main/java/tommy/BOJ_2290.java new file mode 100644 index 0000000..e0788fe --- /dev/null +++ b/src/main/java/tommy/BOJ_2290.java @@ -0,0 +1,172 @@ +package tommy; + +import java.util.Scanner; + +public class BOJ_2290 { + + static int[][] map; + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + int s = sc.nextInt(); + + String numbers = sc.next(); + int num = numbers.length(); + map = new int[(2 * s) + 3][(s + 2) * num]; + + // 1 : - , 2 : | + + for (int i = 0; i < num; i++) { + int number = numbers.charAt(i) - '0'; + int x = (s + 2) * i ; // base line + switch (number) { + case 1: + for (int j = 1; j < 1 + s; j++) { + map[j][x + s + 1] = 2; + } + for (int j = s + 2; j < (2 * s) + 2; j++) { + map[j][x + s + 1] = 2; + } + break; + case 2: + for (int j = x + 1; j < (x + s + 1); j++) { + map[0][j] = 1; + map[s + 1][j] = 1; + map[2 * s + 2][j] = 1; + } + for (int j = 1; j <= s; j++) { + map[j][x + s + 1] = 2; + } + for (int j = s + 2; j <= s * 2 + 1; j++) { + map[j][x] = 2; + } + break; + case 3: + for (int j = x + 1; j < (x + s + 1); j++) { + map[0][j] = 1; + map[s + 1][j] = 1; + map[2 * s + 2][j] = 1; + } + for (int j = 1; j <= s; j++) { + map[j][x + s + 1] = 2; + } + for (int j = s + 2; j <= s * 2 + 1; j++) { + map[j][x + s + 1] = 2; + } + break; + case 4: + for (int j = 1; j <= s; j++) { + map[j][x] = 2; + map[j][x + s + 1] = 2; + } + for (int j = s + 2; j <= 2 * s + 1; j++) { + map[j][x + s + 1] = 2; + } + for (int j = x + 1; j <= (x + s); j++) { + map[s + 1][j] = 1; + } + break; + case 5: + for (int j = x + 1; j < (x + s + 1); j++) { + map[0][j] = 1; + map[s + 1][j] = 1; + map[2 * s + 2][j] = 1; + } + for (int j = 1; j <= s; j++) { + map[j][x] = 2; + } + for (int j = s + 2; j <= 2 * s + 1; j++) { + map[j][x + s + 1] = 2; + } + break; + case 6: + for (int j = x + 1; j < (x + s + 1); j++) { + map[0][j] = 1; + map[s + 1][j] = 1; + map[2 * s + 2][j] = 1; + } + for (int j = 1; j <= s; j++) { + map[j][x] = 2; + } + for (int j = s + 2; j <= 2 * s + 1; j++) { + map[j][x] = 2; + map[j][x + s + 1] = 2; + } + break; + case 7: + for (int j = x + 1; j < (x + s + 1); j++) { + map[0][j] = 1; + } + for (int j = 1; j <= s; j++) { + map[j][x + s + 1] = 2; + } + for (int j = s + 2; j <= 2 * s + 1; j++) { + map[j][x + s + 1] = 2; + } + break; + case 8: + for (int j = x + 1; j < (x + s + 1); j++) { + map[0][j] = 1; + map[s + 1][j] = 1; + map[2 * s + 2][j] = 1; + } + for (int j = 1; j <= s; j++) { + map[j][x] = 2; + map[j][x + s + 1] = 2; + } + for (int j = s + 2; j <= 2 * s + 1; j++) { + map[j][x] = 2; + map[j][x + s + 1] = 2; + } + break; + case 9: + for (int j = x + 1; j < (x + s + 1); j++) { + map[0][j] = 1; + map[s + 1][j] = 1; + map[2 * s + 2][j] = 1; + } + for (int j = 1; j <= s; j++) { + map[j][x] = 2; + map[j][x + s + 1] = 2; + } + for (int j = s + 2; j <= 2 * s + 1; j++) { + map[j][x + s + 1] = 2; + } + break; + case 0: + for (int j = x + 1; j < (x + s + 1); j++) { + map[0][j] = 1; + map[2 * s + 2][j] = 1; + } + for (int j = 1; j <= s; j++) { + map[j][x] = 2; + map[j][x + s + 1] = 2; + } + for (int j = s + 2; j <= 2 * s + 1; j++) { + map[j][x] = 2; + map[j][x + s + 1] = 2; + } + break; + } + } + + StringBuilder sb = new StringBuilder(); + int index = 0; + for (int i = 0; i < map.length; i++) { + for (int j = 0; j < map[0].length; j++) { + if (map[i][j] == 2) { + sb.append("|"); + } else if (map[i][j] == 1) { + sb.append("-"); + } else { + sb.append(" "); + } + index++; + if (index % (s + 2) == 0) { + sb.append(" "); + } + } + sb.append("\n"); + } + System.out.println(sb); + } +} From fe7d178c9acf6ae35a5a46b543b5a58aff2f1c2a Mon Sep 17 00:00:00 2001 From: changhyeon Date: Tue, 6 Feb 2024 14:04:01 +0900 Subject: [PATCH 23/80] =?UTF-8?q?[8=EC=A3=BC=EC=B0=A8]=20=EC=8B=9C?= =?UTF-8?q?=EB=AE=AC=EB=A0=88=EC=9D=B4=EC=85=98=EA=B3=BC=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20BOJ=5F2290,=20BOJ=5F16931=20=ED=99=A9=EC=B0=BD?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/changhyeon/BOJ_16931.java | 53 +++++++++++++++ src/main/java/changhyeon/BOJ_2290.java | 89 +++++++++++++++++++++++++ 2 files changed, 142 insertions(+) create mode 100644 src/main/java/changhyeon/BOJ_16931.java create mode 100644 src/main/java/changhyeon/BOJ_2290.java diff --git a/src/main/java/changhyeon/BOJ_16931.java b/src/main/java/changhyeon/BOJ_16931.java new file mode 100644 index 0000000..d274d9e --- /dev/null +++ b/src/main/java/changhyeon/BOJ_16931.java @@ -0,0 +1,53 @@ +package changhyeon; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.Arrays; +import java.util.StringTokenizer; + +public class BOJ_16931 { + + private static final BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); + private static final int[] mx = {-1, 0, 1, 0}; + private static final int[] my = {0, 1, 0, -1}; + private static int result = 0; + + public static void main(String[] args) throws IOException { + StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine()); + + int N = Integer.parseInt(stringTokenizer.nextToken()); + int M = Integer.parseInt(stringTokenizer.nextToken()); + + int[][] map = new int[N][M]; + + for (int i = 0; i < N; i++) { + map[i] = Arrays.stream(bufferedReader.readLine().split(" ")) + .mapToInt(Integer::parseInt) + .toArray(); + } + + result += 2 * N * M; + + for (int i = 0; i < N; i++) { + for (int j = 0; j < M; j++) { + + for (int k = 0; k < 4; k++) { + int dx = i + mx[k]; + int dy = j + my[k]; + + if (dx < 0 || dy < 0 || dx > N - 1 || dy > M - 1) { + result += map[i][j]; + continue; + } + + if (map[dx][dy] < map[i][j]) { + result += map[i][j] - map[dx][dy]; + } + } + } + } + + System.out.println(result); + } +} diff --git a/src/main/java/changhyeon/BOJ_2290.java b/src/main/java/changhyeon/BOJ_2290.java new file mode 100644 index 0000000..fe8f9b4 --- /dev/null +++ b/src/main/java/changhyeon/BOJ_2290.java @@ -0,0 +1,89 @@ +package changhyeon; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.StringTokenizer; + +public class BOJ_2290 { + + private static final BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); + private static int S, N; + private static int left; + private static String[][] board; + private static int[][] map = { + {0, 1, 1, 1, 0, 1, 1, 1}, + {0, 0, 0, 1, 0, 0, 1, 0}, + {0, 1, 0, 1, 1, 1, 0, 1}, + {0, 1, 0, 1, 1, 0, 1, 1}, + {0, 0, 1, 1, 1, 0, 1, 0}, + {0, 1, 1, 0, 1, 0, 1, 1}, + {0, 1, 1, 0, 1, 1, 1, 1}, + {0, 1, 0, 1, 0, 0, 1, 0}, + {0, 1, 1, 1, 1, 1, 1, 1}, + {0, 1, 1, 1, 1, 0, 1, 1} + }; + + public static void main(String[] args) throws IOException { + StringTokenizer st = new StringTokenizer(bufferedReader.readLine()); + S = Integer.parseInt(st.nextToken()); + + String[] num = st.nextToken().split(""); + N = num.length; + + board = new String[2 * S + 4][N * (S + 4)]; + + fillEmptyBoard(); + + for (int i = 0; i < N; i++) { + makeNumber(num[i]); + } + + result(); + bufferedReader.close(); + } + + private static void makeNumber(final String num) { + int n = Integer.parseInt(num); + + if (map[n][1] == 1) + fill(0, 0, left + 1, left + S, "-"); + if (map[n][4] == 1) + fill(S + 1, S + 1, left + 1, left + S, "-"); + if (map[n][7] == 1) + fill(2 * (S + 1), 2 * (S + 1), left + 1, left + S, "-"); + if (map[n][2] == 1) + fill(1, S, left, left, "|"); + if (map[n][5] == 1) + fill(1 + (S + 1), S + (S + 1), left, left, "|"); + if (map[n][3] == 1) + fill(1, S, left + S + 1, left + S + 1, "|"); + if (map[n][6] == 1) + fill(1 + (S + 1), S + (S + 1), left + S + 1, left + S + 1, "|"); + + left += S + 3; + } + + private static void fillEmptyBoard() { + for (int i = 0; i < 2 * S + 3; i++) { + for (int j = 0; j < N * (S + 4); j++) { + board[i][j] = " "; + } + } + } + + public static void result() { + for (int i = 0; i < 2 * S + 3; i++) { + for (int j = 0; j < left; j++) { + System.out.print(board[i][j]); + } + System.out.println(); + } + } + + public static void fill(int sx, int ex, int sy, int ey, String str) { + for (int x = sx; x <= ex; x++) + for (int y = sy; y <= ey; y++) + board[x][y] = str; + } +} From 01bfebd44d65619e3f039b2f9d132f017d356c62 Mon Sep 17 00:00:00 2001 From: BeomSeogKim Date: Wed, 7 Feb 2024 09:40:10 +0900 Subject: [PATCH 24/80] =?UTF-8?q?[8=EC=A3=BC=EC=B0=A8]=20=EC=8B=9C?= =?UTF-8?q?=EB=AE=AC=EB=A0=88=EC=9D=B4=EC=85=98=EA=B3=BC=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20BOJ=5F16931=20=EA=B9=80=EB=B2=94=EC=84=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/tommy/BOJ_16931.java | 74 ++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 src/main/java/tommy/BOJ_16931.java diff --git a/src/main/java/tommy/BOJ_16931.java b/src/main/java/tommy/BOJ_16931.java new file mode 100644 index 0000000..b2b9dd3 --- /dev/null +++ b/src/main/java/tommy/BOJ_16931.java @@ -0,0 +1,74 @@ +package tommy; + +import java.util.Scanner; + +public class BOJ_16931 { + + static int N, M; + static int[][] map; + + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + + N = sc.nextInt(); + M = sc.nextInt(); + + int area = 0; + + map = new int[N][M]; + for (int i = 0; i < N; i++) { + for (int j = 0; j < M; j++) { + map[i][j] = sc.nextInt(); + area++; // 위 + } + } + + area *= 2; // 아래 + + // East + for (int i = 0; i < N; i++) { + for (int j = M - 1; j >= 1; j--) { + int space = map[i][j - 1] - map[i][j]; + if (space >= 0) { + area += space; + } + } + area += map[i][M - 1]; + } + + // West + for (int i = 0; i < N; i++) { + for (int j = 1; j < M; j++) { + int space = map[i][j] - map[i][j - 1]; + if (space >= 0) { + area += space; + } + } + area += map[i][0]; + } + + // North + for (int j = 0; j < M; j++) { + for (int i = 0; i < N - 1; i++) { + int space = map[i + 1][j] - map[i][j]; + if (space >= 0) { + area += space; + } + } + area += map[0][j]; + } + + // South + for (int j = 0; j < M; j++) { + for (int i = N - 1; i >= 1; i--) { + int space = map[i - 1][j] - map[i][j]; + if (space >= 0) { + area += space; + } + } + area += map[N - 1][j]; + } + + System.out.println(area); + } +} From f92601fff65f575796ba971e313993ff3abd712c Mon Sep 17 00:00:00 2001 From: BeomSeogKim Date: Wed, 7 Feb 2024 10:40:03 +0900 Subject: [PATCH 25/80] =?UTF-8?q?[8=EC=A3=BC=EC=B0=A8]=20=EC=8B=9C?= =?UTF-8?q?=EB=AE=AC=EB=A0=88=EC=9D=B4=EC=85=98=EA=B3=BC=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20BOJ=5F16967=20=EA=B9=80=EB=B2=94=EC=84=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/tommy/BOJ_16967.java | 53 ++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 src/main/java/tommy/BOJ_16967.java diff --git a/src/main/java/tommy/BOJ_16967.java b/src/main/java/tommy/BOJ_16967.java new file mode 100644 index 0000000..895a8e7 --- /dev/null +++ b/src/main/java/tommy/BOJ_16967.java @@ -0,0 +1,53 @@ +package tommy; + +import java.util.Scanner; + +public class BOJ_16967 { + static int H, W, X, Y; + + static int[][] A; + static int[][] B; + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + H = sc.nextInt(); + W = sc.nextInt(); + X = sc.nextInt(); + Y = sc.nextInt(); + + A = new int[H][W]; + B = new int[H + X][W + Y]; + for (int i = 0; i < H + X; i++) { + for (int j = 0; j < W + Y; j++) { + B[i][j] = sc.nextInt(); + } + } + + for (int i = 0; i < X; i++) { + for (int j = 0; j < W; j++) { + A[i][j] = B[i][j]; + } + } + + for (int i = X; i < H; i++) { + for (int j = 0; j < Y; j++) { + A[i][j] = B[i][j]; + } + } + + for (int i = X; i < H; i++) { + for (int j = Y; j < W; j++) { + A[i][j] = B[i][j] - A[i - X][j - Y]; + } + } + + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < H; i++) { + for (int j = 0; j < W; j++) { + sb.append(A[i][j]).append(" "); + } + sb.append("\n"); + } + + System.out.println(sb); + } +} From aee6a4662d0e03e4b2cb1d47e791857348cfefa9 Mon Sep 17 00:00:00 2001 From: changhyeon Date: Wed, 7 Feb 2024 16:31:50 +0900 Subject: [PATCH 26/80] =?UTF-8?q?[8=EC=A3=BC=EC=B0=A8]=20=EC=8B=9C?= =?UTF-8?q?=EB=AE=AC=EB=A0=88=EC=9D=B4=EC=85=98=EA=B3=BC=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20BOJ=5F16967=20=ED=99=A9=EC=B0=BD=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/changhyeon/BOJ_16967.java | 63 +++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 src/main/java/changhyeon/BOJ_16967.java diff --git a/src/main/java/changhyeon/BOJ_16967.java b/src/main/java/changhyeon/BOJ_16967.java new file mode 100644 index 0000000..594e4cf --- /dev/null +++ b/src/main/java/changhyeon/BOJ_16967.java @@ -0,0 +1,63 @@ +package changhyeon; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.Arrays; + +public class BOJ_16967 { + + private static final BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); + private static int H, W, X, Y; + + public static void main(String[] args) throws IOException { + + String[] line = bufferedReader.readLine().split(" "); + + H = Integer.parseInt(line[0]); + W = Integer.parseInt(line[1]); + X = Integer.parseInt(line[2]); + Y = Integer.parseInt(line[3]); + + int[][] arrA = new int[H][W]; + int[][] arrB = new int[H + X][W + Y]; + + for (int i = 0; i < arrB.length; i++) { + arrB[i] = Arrays.stream(bufferedReader.readLine().split(" ")) + .mapToInt(Integer::parseInt) + .toArray(); + } + + noOverlap(arrA, arrB); + overlap(arrA, arrB); + + for (int i = 0; i < H; i++) { + for (int j = 0; j < W; j++) { + System.out.print(arrA[i][j] + " "); + } + System.out.println(); + } + } + + private static void noOverlap(final int[][] arrA, final int[][] arrB) { + for (int i = 0; i < X; i++) { + for (int j = 0; j < W; j++) { + arrA[i][j] = arrB[i][j]; + } + } + + for (int i = X; i < H; i++) { + for (int j = 0; j < Y; j++) { + arrA[i][j] = arrB[i][j]; + } + } + } + + private static void overlap(final int[][] arrA, final int[][] arrB) { + for (int i = X; i < H; i++) { + for (int j = Y; j < W; j++) { + arrA[i][j] = arrB[i][j] - arrA[i - X][j - Y]; + } + } + } +} From c77bd67b5ce54810f5caadc72fb2f9424f584338 Mon Sep 17 00:00:00 2001 From: changhyeon Date: Wed, 7 Feb 2024 17:17:20 +0900 Subject: [PATCH 27/80] =?UTF-8?q?[8=EC=A3=BC=EC=B0=A8]=20=EC=8B=9C?= =?UTF-8?q?=EB=AE=AC=EB=A0=88=EC=9D=B4=EC=85=98=EA=B3=BC=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20BOJ=5F20055=20=ED=99=A9=EC=B0=BD=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/changhyeon/BOJ_20055.java | 104 ++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 src/main/java/changhyeon/BOJ_20055.java diff --git a/src/main/java/changhyeon/BOJ_20055.java b/src/main/java/changhyeon/BOJ_20055.java new file mode 100644 index 0000000..a37162a --- /dev/null +++ b/src/main/java/changhyeon/BOJ_20055.java @@ -0,0 +1,104 @@ +package changhyeon; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +public class BOJ_20055 { + + private static final BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); + private static int N, K; + private static int[][] belt; + private static int[] durability; + private static boolean[][] robot; + + public static void main(String[] args) throws IOException { + String[] line = bufferedReader.readLine().split(" "); + + N = Integer.parseInt(line[0]); + K = Integer.parseInt(line[1]); + + belt = new int[2][N + 1]; + robot = new boolean[2][N + 1]; + durability = new int[2 * N + 1]; + + line = bufferedReader.readLine().split(" "); + for (int i = 1; i <= 2 * N; i++) { + durability[i] = Integer.parseInt(line[i - 1]); + } + + int count = 1; + + for (int i = 1; i <= N; i++) + belt[0][i] = count++; + + for (int i = N; i >= 1; i--) + belt[1][i] = count++; + + System.out.println(goWork()); + } + + private static int goWork() { + int count = 0; + + while (checkDurability()) { + moveBelt(); + moveRobot(); + raiseRobot(); + count++; + } + + return count; + } + + private static boolean checkDurability() { + int count = 0; + + for (int i = 1; i <= 2 * N; i++) { + if (durability[i] == 0) { + count++; + } + } + + return count < K; + } + + private static void moveBelt() { + int tempBelt = belt[1][1]; + + for (int i = 1; i < N; i++) { + belt[1][i] = belt[1][i + 1]; + } + + belt[1][N] = belt[0][N]; + + for (int i = N; i >= 2; i--) { + belt[0][i] = belt[0][i - 1]; + robot[0][i] = robot[0][i - 1]; + } + + belt[0][1] = tempBelt; + + robot[0][1] = false; + robot[0][N] = false; + } + + private static void moveRobot() { + for (int i = N - 1; i >= 1; i--) { + if (robot[0][i] && !robot[0][i + 1] && durability[belt[0][i + 1]] > 0) { + robot[0][i] = false; + robot[0][i + 1] = true; + durability[belt[0][i + 1]]--; + } + } + + robot[0][N] = false; + } + + private static void raiseRobot() { + if (durability[belt[0][1]] > 0) { + robot[0][1] = true; + durability[belt[0][1]]--; + } + } +} From 8f90e46afd3e874739a6b7f4e60adcccd61de69e Mon Sep 17 00:00:00 2001 From: changhyeon Date: Wed, 7 Feb 2024 17:48:10 +0900 Subject: [PATCH 28/80] =?UTF-8?q?[8=EC=A3=BC=EC=B0=A8]=20=ED=95=B4?= =?UTF-8?q?=EC=8B=9C=20PRO=5F=ED=8F=B0=EC=BC=93=EB=AA=AC=20=ED=99=A9?= =?UTF-8?q?=EC=B0=BD=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\355\217\260\354\274\223\353\252\254.java" | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 "src/main/java/changhyeon/PRO_\355\217\260\354\274\223\353\252\254.java" diff --git "a/src/main/java/changhyeon/PRO_\355\217\260\354\274\223\353\252\254.java" "b/src/main/java/changhyeon/PRO_\355\217\260\354\274\223\353\252\254.java" new file mode 100644 index 0000000..1b1dc54 --- /dev/null +++ "b/src/main/java/changhyeon/PRO_\355\217\260\354\274\223\353\252\254.java" @@ -0,0 +1,23 @@ +package changhyeon; + +import java.util.HashSet; +import java.util.Set; + +public class PRO_폰켓몬 { + + public int solution(int[] nums) { + int N = nums.length / 2; + + Set set = new HashSet<>(); + + for (int num : nums) { + set.add(num); + } + + if (set.size() >= N) { + return N; + } + + return set.size(); + } +} From 2b89494c6cbb1ab5a6b97c57ef6aaca67eeda85f Mon Sep 17 00:00:00 2001 From: changhyeon Date: Wed, 7 Feb 2024 18:57:03 +0900 Subject: [PATCH 29/80] =?UTF-8?q?[8=EC=A3=BC=EC=B0=A8]=20=ED=95=B4?= =?UTF-8?q?=EC=8B=9C=20PRO=5F=EC=99=84=EC=A3=BC=ED=95=98=EC=A7=80=EB=AA=BB?= =?UTF-8?q?=ED=95=9C=EC=84=A0=EC=88=98=20=ED=99=A9=EC=B0=BD=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\355\225\234\354\204\240\354\210\230.java" | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 "src/main/java/changhyeon/PRO_\354\231\204\354\243\274\355\225\230\354\247\200\353\252\273\355\225\234\354\204\240\354\210\230.java" diff --git "a/src/main/java/changhyeon/PRO_\354\231\204\354\243\274\355\225\230\354\247\200\353\252\273\355\225\234\354\204\240\354\210\230.java" "b/src/main/java/changhyeon/PRO_\354\231\204\354\243\274\355\225\230\354\247\200\353\252\273\355\225\234\354\204\240\354\210\230.java" new file mode 100644 index 0000000..161d684 --- /dev/null +++ "b/src/main/java/changhyeon/PRO_\354\231\204\354\243\274\355\225\230\354\247\200\353\252\273\355\225\234\354\204\240\354\210\230.java" @@ -0,0 +1,34 @@ +package changhyeon; + +import java.util.HashMap; +import java.util.Map; + +public class PRO_완주하지못한선수 { + + public String solution(String[] participant, String[] completion) { + String answer = ""; + + Map map = new HashMap<>(); + + for (int i = 0; i < participant.length; i++) { + if (!map.containsKey(participant[i])) { + map.put(participant[i], 1); + continue; + } + + map.put(participant[i], map.get(participant[i]) + 1); + } + + for (int i = 0; i < completion.length; i++) { + map.put(completion[i], map.get(completion[i]) - 1); + } + + for (Map.Entry entrySet : map.entrySet()) { + if (entrySet.getValue() >= 1) { + return entrySet.getKey(); + } + } + + return answer; + } +} From 3eafb073a372bcca721eb9257ce47e76430dff29 Mon Sep 17 00:00:00 2001 From: BeomSeogKim Date: Thu, 8 Feb 2024 14:20:00 +0900 Subject: [PATCH 30/80] =?UTF-8?q?[8=EC=A3=BC=EC=B0=A8]=20=ED=95=B4?= =?UTF-8?q?=EC=8B=9C=20PRO=5F=ED=8F=B0=EC=BC=93=EB=AA=AC=20=EA=B9=80?= =?UTF-8?q?=EB=B2=94=EC=84=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\355\217\260\354\274\223\353\252\254.java" | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 "src/main/java/tommy/PRO_\355\217\260\354\274\223\353\252\254.java" diff --git "a/src/main/java/tommy/PRO_\355\217\260\354\274\223\353\252\254.java" "b/src/main/java/tommy/PRO_\355\217\260\354\274\223\353\252\254.java" new file mode 100644 index 0000000..7a45d4f --- /dev/null +++ "b/src/main/java/tommy/PRO_\355\217\260\354\274\223\353\252\254.java" @@ -0,0 +1,20 @@ +package tommy; + +import java.util.HashSet; +import java.util.Set; + +public class PRO_폰켓몬 { + /* + 최대 반환 수 : N / 2 + 같은 숫자인 경우 종류는 1개로 취급 + */ + public int solution(int[] nums) { + int answer = 0; + Set set = new HashSet<>(); + for(int num : nums){ + set.add(num); + } + + return set.size() > nums.length / 2 ? nums.length / 2 : set.size(); + } +} From 6e4f208564610fd869e98d6621b685f251c102b9 Mon Sep 17 00:00:00 2001 From: BeomSeogKim Date: Fri, 9 Feb 2024 08:34:39 +0900 Subject: [PATCH 31/80] =?UTF-8?q?[8=EC=A3=BC=EC=B0=A8]=20=ED=95=B4?= =?UTF-8?q?=EC=8B=9C=20PRO=5F=EC=99=84=EC=A3=BC=ED=95=98=EC=A7=80=20?= =?UTF-8?q?=EB=AA=BB=ED=95=9C=20=EC=84=A0=EC=88=98=20=EA=B9=80=EB=B2=94?= =?UTF-8?q?=EC=84=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\355\225\234\354\204\240\354\210\230.java" | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 "src/main/java/tommy/PRO_\354\231\204\354\243\274\355\225\230\354\247\200\353\252\273\355\225\234\354\204\240\354\210\230.java" diff --git "a/src/main/java/tommy/PRO_\354\231\204\354\243\274\355\225\230\354\247\200\353\252\273\355\225\234\354\204\240\354\210\230.java" "b/src/main/java/tommy/PRO_\354\231\204\354\243\274\355\225\230\354\247\200\353\252\273\355\225\234\354\204\240\354\210\230.java" new file mode 100644 index 0000000..7e0e251 --- /dev/null +++ "b/src/main/java/tommy/PRO_\354\231\204\354\243\274\355\225\230\354\247\200\353\252\273\355\225\234\354\204\240\354\210\230.java" @@ -0,0 +1,27 @@ +package tommy; + +import java.util.HashMap; +import java.util.Map; + +public class PRO_완주하지못한선수 { + public String solution(String[] participant, String[] completion) { + Map map = new HashMap<>(); + for(String p : participant){ + map.put(p, map.getOrDefault(p,0) + 1); + } + + for(String c : completion){ + Integer res = map.get(c); + if(res == 1){ + map.remove(c); + } else { + map.put(c, map.get(c) - 1); + } + } + String answer = ""; + for(String key : map.keySet()){ + answer = key; + } + return answer; + } +} From 9db8c3f16edb90f944d8f12a84fded3b19c007a1 Mon Sep 17 00:00:00 2001 From: BeomSeogKim Date: Tue, 13 Feb 2024 11:08:46 +0900 Subject: [PATCH 32/80] =?UTF-8?q?[9=EC=A3=BC=EC=B0=A8]=20=ED=95=B4?= =?UTF-8?q?=EC=8B=9C=20PRO=5F=EC=A0=84=ED=99=94=EB=B2=88=ED=98=B8=EB=AA=A9?= =?UTF-8?q?=EB=A1=9D=20=EA=B9=80=EB=B2=94=EC=84=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\355\230\270\353\252\251\353\241\235.java" | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 "src/main/java/tommy/PRO_\354\240\204\355\231\224\353\262\210\355\230\270\353\252\251\353\241\235.java" diff --git "a/src/main/java/tommy/PRO_\354\240\204\355\231\224\353\262\210\355\230\270\353\252\251\353\241\235.java" "b/src/main/java/tommy/PRO_\354\240\204\355\231\224\353\262\210\355\230\270\353\252\251\353\241\235.java" new file mode 100644 index 0000000..d1dca9b --- /dev/null +++ "b/src/main/java/tommy/PRO_\354\240\204\355\231\224\353\262\210\355\230\270\353\252\251\353\241\235.java" @@ -0,0 +1,29 @@ +package tommy; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; + +public class PRO_전화번호목록 { + + /* + * Space Complexity : O(N) ==> map에 phone_book의 크기만큼 저장 될 수 있기 때문에 + * Time Complexity : O(N log N) ==> Arrays.sort() // for문이 중첩되긴 하지만 전화번호의 최대 길이는 20자이므로 N log N 이 우세 + */ + public boolean solution(String[] phone_book) { + boolean answer = true; + Map map = new HashMap<>(); + Arrays.sort(phone_book); + for(String phone : phone_book){ + // 검증 + for(int i = 0; i <= phone.length(); i++){ + String partition = phone.substring(0, i); + if(map.containsKey(partition)){ + answer = false; + } + } + map.put(phone, true); + } + return answer; + } +} From ce90833e5196baf630e0b71f8ccabf43fd90bee8 Mon Sep 17 00:00:00 2001 From: BeomSeogKim Date: Tue, 13 Feb 2024 11:32:51 +0900 Subject: [PATCH 33/80] =?UTF-8?q?[9=EC=A3=BC=EC=B0=A8]=20=ED=95=B4?= =?UTF-8?q?=EC=8B=9C=20PRO=5F=EC=9D=98=EC=83=81=20=EA=B9=80=EB=B2=94?= =?UTF-8?q?=EC=84=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tommy/PRO_\354\235\230\354\203\201.java" | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 "src/main/java/tommy/PRO_\354\235\230\354\203\201.java" diff --git "a/src/main/java/tommy/PRO_\354\235\230\354\203\201.java" "b/src/main/java/tommy/PRO_\354\235\230\354\203\201.java" new file mode 100644 index 0000000..6cfd681 --- /dev/null +++ "b/src/main/java/tommy/PRO_\354\235\230\354\203\201.java" @@ -0,0 +1,30 @@ +package tommy; + +import java.util.HashMap; +import java.util.Map; + +public class PRO_의상 { + /* + * Time Complexity : O(N) + * Space Complexity : O(N) + */ + class Solution { + public int solution(String[][] clothes) { + int answer = 1; + Map map = new HashMap<>(); + for(String[] clothe : clothes){ + String category = clothe[1]; + map.put(category, map.getOrDefault(category, 0) + 1); + } + + for(int i : map.values()){ + answer *= (i + 1); + } + return answer - 1; + // Stream 을 활용한 방식 +// return map.values().stream() +// .map(i -> i + 1) +// .reduce(1, (a, b) -> a * b) - 1; + } + } +} From 6df703204dbde9a7db09f4a95d6ed75ad3385950 Mon Sep 17 00:00:00 2001 From: changhyeon Date: Tue, 13 Feb 2024 14:30:05 +0900 Subject: [PATCH 34/80] =?UTF-8?q?[9=EC=A3=BC=EC=B0=A8]=20=ED=95=B4?= =?UTF-8?q?=EC=8B=9C=20PRO=5F=EC=A0=84=ED=99=94=EB=B2=88=ED=98=B8=EB=AA=A9?= =?UTF-8?q?=EB=A1=9D=20=ED=99=A9=EC=B0=BD=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\355\230\270\353\252\251\353\241\235.java" | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 "src/main/java/changhyeon/PRO_\354\240\204\355\231\224\353\262\210\355\230\270\353\252\251\353\241\235.java" diff --git "a/src/main/java/changhyeon/PRO_\354\240\204\355\231\224\353\262\210\355\230\270\353\252\251\353\241\235.java" "b/src/main/java/changhyeon/PRO_\354\240\204\355\231\224\353\262\210\355\230\270\353\252\251\353\241\235.java" new file mode 100644 index 0000000..f0bfe30 --- /dev/null +++ "b/src/main/java/changhyeon/PRO_\354\240\204\355\231\224\353\262\210\355\230\270\353\252\251\353\241\235.java" @@ -0,0 +1,21 @@ +package changhyeon; + +import java.util.Arrays; + +public class PRO_전화번호목록 { + + public boolean solution(String[] phone_book) { + + Arrays.sort(phone_book); + + System.out.println(Arrays.toString(phone_book)); + + for (int i = 0; i < phone_book.length - 1; i++) { + if (phone_book[i + 1].startsWith(phone_book[i])) { + return false; + } + } + + return true; + } +} From 0819f0cb4c25a6ee71e2f3ba6ef0770449f23218 Mon Sep 17 00:00:00 2001 From: changhyeon Date: Tue, 13 Feb 2024 14:58:21 +0900 Subject: [PATCH 35/80] =?UTF-8?q?[9=EC=A3=BC=EC=B0=A8]=20=ED=95=B4?= =?UTF-8?q?=EC=8B=9C=20PRO=5F=EC=9D=98=EC=83=81=20=ED=99=A9=EC=B0=BD?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PRO_\354\235\230\354\203\201.java" | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 "src/main/java/changhyeon/PRO_\354\235\230\354\203\201.java" diff --git "a/src/main/java/changhyeon/PRO_\354\235\230\354\203\201.java" "b/src/main/java/changhyeon/PRO_\354\235\230\354\203\201.java" new file mode 100644 index 0000000..3ed3001 --- /dev/null +++ "b/src/main/java/changhyeon/PRO_\354\235\230\354\203\201.java" @@ -0,0 +1,24 @@ +package changhyeon; + +import java.util.HashMap; +import java.util.Map; + +public class Solution { + + public int solution(String[][] clothes) { + int sum = 1; + + Map map = new HashMap<>(); + + for (int i = 0; i < clothes.length; i++) { + String category = clothes[i][1]; + map.put(category, map.getOrDefault(category, 0) + 1); + } + + for (int num : map.values()) { + sum *= (num + 1); // 안 입었을 때의 경우 1 추가 + } + + return sum - 1; + } +} From 92a14eb9c03ea5ba3700422b28cc7488065687cc Mon Sep 17 00:00:00 2001 From: changhyeon Date: Tue, 13 Feb 2024 14:58:43 +0900 Subject: [PATCH 36/80] =?UTF-8?q?[9=EC=A3=BC=EC=B0=A8]=20=ED=95=B4?= =?UTF-8?q?=EC=8B=9C=20PRO=5F=EC=9D=98=EC=83=81=20=EC=88=98=EC=A0=95=20?= =?UTF-8?q?=ED=99=A9=EC=B0=BD=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "src/main/java/changhyeon/PRO_\354\235\230\354\203\201.java" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/src/main/java/changhyeon/PRO_\354\235\230\354\203\201.java" "b/src/main/java/changhyeon/PRO_\354\235\230\354\203\201.java" index 3ed3001..c8699ae 100644 --- "a/src/main/java/changhyeon/PRO_\354\235\230\354\203\201.java" +++ "b/src/main/java/changhyeon/PRO_\354\235\230\354\203\201.java" @@ -3,7 +3,7 @@ import java.util.HashMap; import java.util.Map; -public class Solution { +public class PRO_의상 { public int solution(String[][] clothes) { int sum = 1; From d8bba803c4cbe58971bb696769349f115028f031 Mon Sep 17 00:00:00 2001 From: BeomSeogKim Date: Wed, 14 Feb 2024 13:40:41 +0900 Subject: [PATCH 37/80] =?UTF-8?q?[9=EC=A3=BC=EC=B0=A8]=20=ED=95=B4?= =?UTF-8?q?=EC=8B=9C=20PRO=5F=EB=B2=A0=EC=8A=A4=ED=8A=B8=EC=95=A8=EB=B2=94?= =?UTF-8?q?=20=EA=B9=80=EB=B2=94=EC=84=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\355\212\270\354\225\250\353\262\224.java" | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 "src/main/java/tommy/PRO_\353\262\240\354\212\244\355\212\270\354\225\250\353\262\224.java" diff --git "a/src/main/java/tommy/PRO_\353\262\240\354\212\244\355\212\270\354\225\250\353\262\224.java" "b/src/main/java/tommy/PRO_\353\262\240\354\212\244\355\212\270\354\225\250\353\262\224.java" new file mode 100644 index 0000000..ab8270f --- /dev/null +++ "b/src/main/java/tommy/PRO_\353\262\240\354\212\244\355\212\270\354\225\250\353\262\224.java" @@ -0,0 +1,40 @@ +package tommy; + +import java.util.*; + +public class PRO_베스트앨범 { + public int[] solution(String[] genres, int[] plays) { + List answer = new ArrayList<>(); + + Map gMap = new HashMap<>(); + Map> pMap = new HashMap<>(); // index, play + + for(int i = 0; i < genres.length; i++){ + gMap.put(genres[i], gMap.getOrDefault(genres[i], 0) + plays[i]); + if(pMap.containsKey(genres[i])){ + pMap.get(genres[i]).put(i, plays[i]); + } else{ + Map temp = new HashMap<>(); + temp.put(i, plays[i]); + pMap.put(genres[i], temp); + } + } + + List keySet = new ArrayList<>(gMap.keySet()); + Collections.sort(keySet, (a, b) -> gMap.get(b) - gMap.get(a)); + + for (String key : keySet){ + Map map = pMap.get(key); + List genre_key = new ArrayList<>(map.keySet()); + + Collections.sort(genre_key, (a, b) -> map.get(b) - map.get(a)); + + answer.add(genre_key.get(0)); + if (genre_key.size() > 1){ + answer.add(genre_key.get(1)); + } + } + + return answer.stream().mapToInt(i -> i).toArray(); + } +} From d29906cb5f9b8c0738df8481f9928951238cb7ac Mon Sep 17 00:00:00 2001 From: BeomSeogKim Date: Wed, 14 Feb 2024 13:41:29 +0900 Subject: [PATCH 38/80] =?UTF-8?q?[9=EC=A3=BC=EC=B0=A8]=20=EC=8A=A4?= =?UTF-8?q?=ED=83=9D/=ED=81=90=20PRO=5F=EA=B0=99=EC=9D=80=EC=88=AB?= =?UTF-8?q?=EC=9E=90=EB=8A=94=EC=8B=AB=EC=96=B4=20=EA=B9=80=EB=B2=94?= =?UTF-8?q?=EC=84=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\353\212\224\354\213\253\354\226\264.java" | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 "src/main/java/tommy/PRO_\352\260\231\354\235\200\354\210\253\354\236\220\353\212\224\354\213\253\354\226\264.java" diff --git "a/src/main/java/tommy/PRO_\352\260\231\354\235\200\354\210\253\354\236\220\353\212\224\354\213\253\354\226\264.java" "b/src/main/java/tommy/PRO_\352\260\231\354\235\200\354\210\253\354\236\220\353\212\224\354\213\253\354\226\264.java" new file mode 100644 index 0000000..9dd480d --- /dev/null +++ "b/src/main/java/tommy/PRO_\352\260\231\354\235\200\354\210\253\354\236\220\353\212\224\354\213\253\354\226\264.java" @@ -0,0 +1,40 @@ +package tommy; + +import java.util.*; + +public class PRO_같은숫자는싫어 { + public int[] solution(String[] genres, int[] plays) { + List answer = new ArrayList<>(); + + Map gMap = new HashMap<>(); + Map> pMap = new HashMap<>(); // index, play + + for(int i = 0; i < genres.length; i++){ + gMap.put(genres[i], gMap.getOrDefault(genres[i], 0) + plays[i]); + if(pMap.containsKey(genres[i])){ + pMap.get(genres[i]).put(i, plays[i]); + } else{ + Map temp = new HashMap<>(); + temp.put(i, plays[i]); + pMap.put(genres[i], temp); + } + } + + List keySet = new ArrayList<>(gMap.keySet()); + Collections.sort(keySet, (a, b) -> gMap.get(b) - gMap.get(a)); + + for (String key : keySet){ + Map map = pMap.get(key); + List genre_key = new ArrayList<>(map.keySet()); + + Collections.sort(genre_key, (a, b) -> map.get(b) - map.get(a)); + + answer.add(genre_key.get(0)); + if (genre_key.size() > 1){ + answer.add(genre_key.get(1)); + } + } + + return answer.stream().mapToInt(i -> i).toArray(); + } +} From 9d210366476f2da9259fc4cedc6912c0ddcdcc47 Mon Sep 17 00:00:00 2001 From: changhyeon Date: Wed, 14 Feb 2024 15:35:10 +0900 Subject: [PATCH 39/80] =?UTF-8?q?[9=EC=A3=BC=EC=B0=A8]=20=ED=95=B4?= =?UTF-8?q?=EC=8B=9C=20PRO=5F=EB=B2=A0=EC=8A=A4=ED=8A=B8=EC=95=A8=EB=B2=94?= =?UTF-8?q?=20=ED=99=A9=EC=B0=BD=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\355\212\270\354\225\250\353\262\224.java" | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 "src/main/java/changhyeon/PRO_\353\262\240\354\212\244\355\212\270\354\225\250\353\262\224.java" diff --git "a/src/main/java/changhyeon/PRO_\353\262\240\354\212\244\355\212\270\354\225\250\353\262\224.java" "b/src/main/java/changhyeon/PRO_\353\262\240\354\212\244\355\212\270\354\225\250\353\262\224.java" new file mode 100644 index 0000000..331a3e2 --- /dev/null +++ "b/src/main/java/changhyeon/PRO_\353\262\240\354\212\244\355\212\270\354\225\250\353\262\224.java" @@ -0,0 +1,65 @@ +package changhyeon; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class PRO_베스트앨범 { + + public int[] solution(String[] genres, int[] plays) { + List answer = new ArrayList<>(); + + Map map = new HashMap<>(); + ArrayList sortedGenres = new ArrayList<>(); + + for (int i = 0; i < genres.length; i++) { + map.put(genres[i], map.getOrDefault(genres[i], 0) + plays[i]); + } + + for (String genre : map.keySet()) { + sortedGenres.add(genre); + } + + sortedGenres.sort((g1, g2) -> map.get(g2) - map.get(g1)); + + for (String genre : sortedGenres) { + List musics = new ArrayList<>(); + for (int i = 0; i < genres.length; i++) { + if (genre.equals(genres[i])) { + musics.add(new music(i, plays[i])); + } + } + + musics.sort(new Comparator() { + public int compare(music m1, music m2) { + if (m1.play == m2.play) { + return m1.index - m2.index; + } + return m2.play - m1.play; + } + }); + + answer.add(musics.get(0).index); + if (musics.size() != 1) { + answer.add(musics.get(1).index); + } + } + + System.out.println(answer.toString()); + + return answer.stream().mapToInt(i -> i).toArray(); + } + + public static class music { + + int index; + int play; + + public music(int index, int play) { + this.index = index; + this.play = play; + } + } +} From 0467597b239bdba18eedf54cb8e11aeb5e67c263 Mon Sep 17 00:00:00 2001 From: changhyeon Date: Wed, 14 Feb 2024 15:48:06 +0900 Subject: [PATCH 40/80] =?UTF-8?q?[9=EC=A3=BC=EC=B0=A8]=20=ED=95=B4?= =?UTF-8?q?=EC=8B=9C=20PRO=5F=EA=B0=99=EC=9D=80=20=EC=88=AB=EC=9E=90?= =?UTF-8?q?=EB=8A=94=20=EC=8B=AB=EC=96=B4=20=ED=99=A9=EC=B0=BD=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\353\212\224\354\213\253\354\226\264.java" | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 "src/main/java/changhyeon/PRO_\352\260\231\354\235\200\354\210\253\354\236\220\353\212\224\354\213\253\354\226\264.java" diff --git "a/src/main/java/changhyeon/PRO_\352\260\231\354\235\200\354\210\253\354\236\220\353\212\224\354\213\253\354\226\264.java" "b/src/main/java/changhyeon/PRO_\352\260\231\354\235\200\354\210\253\354\236\220\353\212\224\354\213\253\354\226\264.java" new file mode 100644 index 0000000..30685a8 --- /dev/null +++ "b/src/main/java/changhyeon/PRO_\352\260\231\354\235\200\354\210\253\354\236\220\353\212\224\354\213\253\354\226\264.java" @@ -0,0 +1,30 @@ +package changhyeon; + +import java.util.ArrayDeque; +import java.util.Deque; + +public class PRO_같은숫자는싫어 { + + public int[] solution(int[] arr) { + Deque deque = new ArrayDeque<>(); + + for (int number : arr) { + if (deque.isEmpty()) { + deque.add(number); + continue; + } + + if (deque.peekLast() != number) { + deque.add(number); + } + } + + int[] answer = new int[deque.size()]; + + for (int i = 0; i < answer.length; i++) { + answer[i] = deque.poll(); + } + + return answer; + } +} From 80b03d9109751dd5079fbcd0bfc5fb386c236b27 Mon Sep 17 00:00:00 2001 From: changhyeon Date: Wed, 14 Feb 2024 16:50:13 +0900 Subject: [PATCH 41/80] =?UTF-8?q?[9=EC=A3=BC=EC=B0=A8]=20=ED=95=B4?= =?UTF-8?q?=EC=8B=9C=20PRO=5F=EA=B8=B0=EB=8A=A5=EA=B0=9C=EB=B0=9C=20?= =?UTF-8?q?=ED=99=A9=EC=B0=BD=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\353\212\245\352\260\234\353\260\234.java" | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 "src/main/java/changhyeon/PRO_\352\270\260\353\212\245\352\260\234\353\260\234.java" diff --git "a/src/main/java/changhyeon/PRO_\352\270\260\353\212\245\352\260\234\353\260\234.java" "b/src/main/java/changhyeon/PRO_\352\270\260\353\212\245\352\260\234\353\260\234.java" new file mode 100644 index 0000000..5d30870 --- /dev/null +++ "b/src/main/java/changhyeon/PRO_\352\270\260\353\212\245\352\260\234\353\260\234.java" @@ -0,0 +1,48 @@ +package changhyeon; + +import java.util.ArrayDeque; +import java.util.ArrayList; +import java.util.Deque; +import java.util.List; + +public class PRO_기능개발 { + + public int[] solution(int[] progresses, int[] speeds) { + List answer = new ArrayList<>(); + Deque deque = new ArrayDeque<>(); + + for (int i = 0; i < progresses.length; i++) { + int progress = progresses[i]; + int count = 0; + + while (progress < 100) { + count++; + progress += speeds[i]; + } + + deque.add(count); + } + + int count = 0; + int number = 0; + while (!deque.isEmpty()) { + if (number >= deque.peek()) { + deque.poll(); + } else { + number = deque.poll(); + } + + count++; + + if (deque.isEmpty()) { + answer.add(count); + } else if (deque.peek() > number) { + answer.add(count); + count = 0; + number = 0; + } + } + + return answer.stream().mapToInt(i -> i).toArray(); + } +} From 1b1e5d7158c4ce2cc50b052ba1f6825b3aee0321 Mon Sep 17 00:00:00 2001 From: changhyeon Date: Wed, 14 Feb 2024 17:13:52 +0900 Subject: [PATCH 42/80] =?UTF-8?q?[9=EC=A3=BC=EC=B0=A8]=20=EC=8A=A4?= =?UTF-8?q?=ED=83=9D/=ED=81=90=20PRO=5F=EC=98=AC=EB=B0=94=EB=A5=B8?= =?UTF-8?q?=EA=B4=84=ED=98=B8=20=ED=99=A9=EC=B0=BD=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\353\245\270\352\264\204\355\230\270.java" | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 "src/main/java/changhyeon/PRO_\354\230\254\353\260\224\353\245\270\352\264\204\355\230\270.java" diff --git "a/src/main/java/changhyeon/PRO_\354\230\254\353\260\224\353\245\270\352\264\204\355\230\270.java" "b/src/main/java/changhyeon/PRO_\354\230\254\353\260\224\353\245\270\352\264\204\355\230\270.java" new file mode 100644 index 0000000..3345093 --- /dev/null +++ "b/src/main/java/changhyeon/PRO_\354\230\254\353\260\224\353\245\270\352\264\204\355\230\270.java" @@ -0,0 +1,24 @@ +package changhyeon; + +public class PRO_올바른괄호 { + + boolean solution(String s) { + boolean answer = true; + int count = 0; + String[] arr = s.split(""); + + for (int i = 0; i < arr.length; i++) { + if (count == 0 && arr[i].equals(")")) { + return false; + } + + if (arr[i].equals("(")) { + count++; + } else { + count--; + } + } + + return count == 0 ? true : false; + } +} From 7ed04836c5ad01caca7ab34bce1a137ad6e48e74 Mon Sep 17 00:00:00 2001 From: changhyeon Date: Wed, 14 Feb 2024 17:19:00 +0900 Subject: [PATCH 43/80] =?UTF-8?q?docs:=20=EB=AC=B8=EC=A0=9C=20=EC=97=85?= =?UTF-8?q?=EB=8D=B0=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/README.md b/README.md index 5032260..6441ded 100644 --- a/README.md +++ b/README.md @@ -177,6 +177,22 @@ algorithm-study [55. [골드4] 주사위 굴리기](https://www.acmicpc.net/problem/14499)
[56. [골드3] 경사로](https://www.acmicpc.net/problem/14890)
+### 8주차 + +#### 시뮬레이션과 구현 + +[[골드5] 톱니바퀴(2)](https://www.acmicpc.net/problem/15662)
+[[골드5] 로봇청소기](https://www.acmicpc.net/problem/14503)
+[[실버2] LCD Test](https://www.acmicpc.net/problem/2290)
+[[실버2] 겉넓이 구하기](https://www.acmicpc.net/problem/16931)
+[[실버3] 배열 복원하기](https://www.acmicpc.net/problem/16967)
+[[골드5] 컨베이어 벨트 위의 로봇](https://www.acmicpc.net/problem/20055)
+ +#### 해시 + +[[레벨1] 폰켓몬](https://school.programmers.co.kr/learn/courses/30/lessons/1845)
+[[레벨1] 완주하지 못한 선수](https://school.programmers.co.kr/learn/courses/30/lessons/42576)
+ ## 참고 https://code.plus/course/51 From 2d6addf30329e4eb2ffc7cd67a515901392e786c Mon Sep 17 00:00:00 2001 From: changhyeon Date: Wed, 14 Feb 2024 17:20:14 +0900 Subject: [PATCH 44/80] =?UTF-8?q?docs:=20=EB=AC=B8=EC=A0=9C=20=EB=B2=88?= =?UTF-8?q?=ED=98=B8=20=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 6441ded..cf6a409 100644 --- a/README.md +++ b/README.md @@ -181,17 +181,17 @@ algorithm-study #### 시뮬레이션과 구현 -[[골드5] 톱니바퀴(2)](https://www.acmicpc.net/problem/15662)
-[[골드5] 로봇청소기](https://www.acmicpc.net/problem/14503)
-[[실버2] LCD Test](https://www.acmicpc.net/problem/2290)
-[[실버2] 겉넓이 구하기](https://www.acmicpc.net/problem/16931)
-[[실버3] 배열 복원하기](https://www.acmicpc.net/problem/16967)
-[[골드5] 컨베이어 벨트 위의 로봇](https://www.acmicpc.net/problem/20055)
+[57. [골드5] 톱니바퀴(2)](https://www.acmicpc.net/problem/15662)
+[58. [골드5] 로봇청소기](https://www.acmicpc.net/problem/14503)
+[59. [실버2] LCD Test](https://www.acmicpc.net/problem/2290)
+[60. [실버2] 겉넓이 구하기](https://www.acmicpc.net/problem/16931)
+[61. [실버3] 배열 복원하기](https://www.acmicpc.net/problem/16967)
+[62. [골드5] 컨베이어 벨트 위의 로봇](https://www.acmicpc.net/problem/20055)
#### 해시 -[[레벨1] 폰켓몬](https://school.programmers.co.kr/learn/courses/30/lessons/1845)
-[[레벨1] 완주하지 못한 선수](https://school.programmers.co.kr/learn/courses/30/lessons/42576)
+[63. [레벨1] 폰켓몬](https://school.programmers.co.kr/learn/courses/30/lessons/1845)
+[64. [레벨1] 완주하지 못한 선수](https://school.programmers.co.kr/learn/courses/30/lessons/42576)
## 참고 From 6c2f82fdb939a61f247fa1d3d1a14ebc3874ff34 Mon Sep 17 00:00:00 2001 From: BeomSeogKim Date: Thu, 15 Feb 2024 13:38:45 +0900 Subject: [PATCH 45/80] =?UTF-8?q?[9=EC=A3=BC=EC=B0=A8]=20=EC=8A=A4?= =?UTF-8?q?=ED=83=9D/=ED=81=90=20PRO=5F=EA=B8=B0=EB=8A=A5=EA=B0=9C?= =?UTF-8?q?=EB=B0=9C=20=EA=B9=80=EB=B2=94=EC=84=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\353\212\245\352\260\234\353\260\234.java" | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 "src/main/java/tommy/PRO_\352\270\260\353\212\245\352\260\234\353\260\234.java" diff --git "a/src/main/java/tommy/PRO_\352\270\260\353\212\245\352\260\234\353\260\234.java" "b/src/main/java/tommy/PRO_\352\270\260\353\212\245\352\260\234\353\260\234.java" new file mode 100644 index 0000000..8649750 --- /dev/null +++ "b/src/main/java/tommy/PRO_\352\270\260\353\212\245\352\260\234\353\260\234.java" @@ -0,0 +1,34 @@ +package tommy; + +import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; +import java.util.Queue; + +public class PRO_기능개발 { + + /* + * Time Complexity : O(N) + * Space Complexity : O(N) + */ + public int[] solution(int[] progresses, int[] speeds) { + Queue queue = new LinkedList<>(); + for(int i = 0; i < progresses.length; i++){ + int due = (int) Math.ceil((100.0 - progresses[i]) / speeds[i]); + queue.add(due); + } + + List list = new ArrayList<>(); + while(!queue.isEmpty()){ + int current = queue.poll(); + int days = 1; + while(!queue.isEmpty() && queue.peek() <= current){ + queue.poll(); + days++; + } + list.add(days); + } + + return list.stream().mapToInt(i -> i).toArray(); + } +} From 82ff46c6cc7c8a306c7df64ad27867bc9ce0d28a Mon Sep 17 00:00:00 2001 From: BeomSeogKim Date: Thu, 15 Feb 2024 13:50:45 +0900 Subject: [PATCH 46/80] =?UTF-8?q?[9=EC=A3=BC=EC=B0=A8]=20=EC=8A=A4?= =?UTF-8?q?=ED=83=9D/=ED=81=90=20PRO=5F=EC=98=AC=EB=B0=94=EB=A5=B8?= =?UTF-8?q?=EA=B4=84=ED=98=B8=20=EA=B9=80=EB=B2=94=EC=84=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\353\245\270\352\264\204\355\230\270.java" | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 "src/main/java/tommy/PRO_\354\230\254\353\260\224\353\245\270\352\264\204\355\230\270.java" diff --git "a/src/main/java/tommy/PRO_\354\230\254\353\260\224\353\245\270\352\264\204\355\230\270.java" "b/src/main/java/tommy/PRO_\354\230\254\353\260\224\353\245\270\352\264\204\355\230\270.java" new file mode 100644 index 0000000..a80b736 --- /dev/null +++ "b/src/main/java/tommy/PRO_\354\230\254\353\260\224\353\245\270\352\264\204\355\230\270.java" @@ -0,0 +1,31 @@ +package tommy; + +import java.util.Stack; + +public class PRO_올바른괄호 { + + /* + * Time Complexity : O(N) + * Space Complexity : O(N) + */ + boolean solution(String s) { + Stack stack = new Stack<>(); + for(char c : s.toCharArray()){ + if (c == '('){ + stack.push(c); + } + else { + if (stack.isEmpty()){ + return false; + } + stack.pop(); + } + } + + if (!stack.isEmpty()){ + return false; + } + + return true; + } +} From 2757a408483e2eea6cdedd5545eefb337bac73be Mon Sep 17 00:00:00 2001 From: BeomSeogKim Date: Fri, 16 Feb 2024 15:43:53 +0900 Subject: [PATCH 47/80] =?UTF-8?q?[9=EC=A3=BC=EC=B0=A8]=20=EC=8A=A4?= =?UTF-8?q?=ED=83=9D/=ED=81=90=20PRO=5F=EB=8B=A4=EB=A6=AC=EB=A5=BC?= =?UTF-8?q?=EC=A7=80=EB=82=98=EB=8A=94=ED=8A=B8=EB=9F=AD=20=EA=B9=80?= =?UTF-8?q?=EB=B2=94=EC=84=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\353\212\224\355\212\270\353\237\255.java" | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 "src/main/java/tommy/PRO_\353\213\244\353\246\254\353\245\274\354\247\200\353\202\230\353\212\224\355\212\270\353\237\255.java" diff --git "a/src/main/java/tommy/PRO_\353\213\244\353\246\254\353\245\274\354\247\200\353\202\230\353\212\224\355\212\270\353\237\255.java" "b/src/main/java/tommy/PRO_\353\213\244\353\246\254\353\245\274\354\247\200\353\202\230\353\212\224\355\212\270\353\237\255.java" new file mode 100644 index 0000000..1cc8e08 --- /dev/null +++ "b/src/main/java/tommy/PRO_\353\213\244\353\246\254\353\245\274\354\247\200\353\202\230\353\212\224\355\212\270\353\237\255.java" @@ -0,0 +1,40 @@ +package tommy; + +import java.util.LinkedList; +import java.util.Queue; + +public class PRO_다리를지나는트럭 { + + public int solution(int bridge_length, int weight, int[] truck_weights) { + Queue queue = new LinkedList<>(); + int time = 0; + int sum = 0; + + for(int i = 0; i < truck_weights.length; i++){ + int current = truck_weights[i]; + + while(true){ + if(queue.isEmpty()){ + queue.add(current); + sum += current; + time++; + break; + } else if (queue.size() == bridge_length){ + sum -= queue.poll(); + } else { + if(sum + current <= weight){ + queue.add(current); + sum += current; + time++; + break; + } else{ + queue.add(0); + time++; + } + } + } + } + + return bridge_length + time; + } +} From 64f66f3a57a8186dc195cc17c1c98b8492cbff46 Mon Sep 17 00:00:00 2001 From: BeomSeogKim Date: Fri, 16 Feb 2024 15:46:17 +0900 Subject: [PATCH 48/80] =?UTF-8?q?[9=EC=A3=BC=EC=B0=A8]=20=EC=8A=A4?= =?UTF-8?q?=ED=83=9D/=ED=81=90=20PRO=5F=EC=A3=BC=EC=8B=9D=EA=B0=80?= =?UTF-8?q?=EA=B2=A9=20=EA=B9=80=EB=B2=94=EC=84=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\354\213\235\352\260\200\352\262\251.java" | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 "src/main/java/tommy/PRO_\354\243\274\354\213\235\352\260\200\352\262\251.java" diff --git "a/src/main/java/tommy/PRO_\354\243\274\354\213\235\352\260\200\352\262\251.java" "b/src/main/java/tommy/PRO_\354\243\274\354\213\235\352\260\200\352\262\251.java" new file mode 100644 index 0000000..726b788 --- /dev/null +++ "b/src/main/java/tommy/PRO_\354\243\274\354\213\235\352\260\200\352\262\251.java" @@ -0,0 +1,33 @@ +package tommy; + +import java.util.ArrayList; +import java.util.List; + +public class PRO_주식가격 { + public int[] solution(int[] prices) { + List answer = new ArrayList<>(); + + for(int i = 0; i < prices.length; i++){ + int current = prices[i]; + + int pointer = i + 1; + while(true){ + if(pointer == prices.length){ + answer.add(pointer - i - 1); + break; + } + + int temp = prices[pointer]; + + if(temp < current){ + answer.add(pointer - i); + break; + } else{ + pointer++; + } + } + } + + return answer.stream().mapToInt(i -> i).toArray(); + } +} From fad3d0aad1d997a3f7b50fc41f2cefae078bd3e6 Mon Sep 17 00:00:00 2001 From: changhyeon Date: Sun, 18 Feb 2024 16:18:32 +0900 Subject: [PATCH 49/80] =?UTF-8?q?[9=EC=A3=BC=EC=B0=A8]=20=EC=8A=A4?= =?UTF-8?q?=ED=83=9D/=ED=81=90=20PRO=5F=EB=8B=A4=EB=A6=AC=EB=A5=BC?= =?UTF-8?q?=EC=A7=80=EB=82=98=EB=8A=94=ED=8A=B8=EB=9F=AD,=20PRO=5F?= =?UTF-8?q?=EC=A3=BC=EC=8B=9D=EA=B0=80=EA=B2=A9=20=ED=99=A9=EC=B0=BD?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\353\212\224\355\212\270\353\237\255.java" | 75 +++++++++++++++++++ ...\354\213\235\352\260\200\352\262\251.java" | 54 +++++++++++++ 2 files changed, 129 insertions(+) create mode 100644 "src/main/java/changhyeon/PRO_\353\213\244\353\246\254\353\245\274\354\247\200\353\202\230\353\212\224\355\212\270\353\237\255.java" create mode 100644 "src/main/java/changhyeon/PRO_\354\243\274\354\213\235\352\260\200\352\262\251.java" diff --git "a/src/main/java/changhyeon/PRO_\353\213\244\353\246\254\353\245\274\354\247\200\353\202\230\353\212\224\355\212\270\353\237\255.java" "b/src/main/java/changhyeon/PRO_\353\213\244\353\246\254\353\245\274\354\247\200\353\202\230\353\212\224\355\212\270\353\237\255.java" new file mode 100644 index 0000000..ca6902f --- /dev/null +++ "b/src/main/java/changhyeon/PRO_\353\213\244\353\246\254\353\245\274\354\247\200\353\202\230\353\212\224\355\212\270\353\237\255.java" @@ -0,0 +1,75 @@ +package changhyeon; + +import java.util.ArrayDeque; +import java.util.Deque; + +public class PRO_다리를지나는트럭 { + + public int solution(int bridge_length, int weight, int[] truck_weights) { + int sum = 0; + int count = 0; + + Deque wait = new ArrayDeque<>(); + Deque during = new ArrayDeque<>(); + + for (int truckWeight : truck_weights) { + wait.add(truckWeight); + } + + while (true) { + if (wait.isEmpty() && during.isEmpty()) { + break; + } + + count++; + Truck duringTruck = during.peek(); + + if (duringTruck != null) { + if (duringTruck.getIndex() == bridge_length) { + during.poll(); + sum -= duringTruck.getWeight(); + } + + for (Truck truck : during) { + truck.updateIndex(); + } + } + + Integer truckWeight = wait.peek(); + if (truckWeight != null) { + if (weight < (truckWeight + sum) || during.size() >= bridge_length) { + continue; + } + + sum += truckWeight; + truckWeight = wait.poll(); + during.add(new Truck(1, truckWeight)); + } + } + + return count; + } + + static class Truck { + + private int index; + private int weight; + + public Truck(int index, int weight) { + this.index = index; + this.weight = weight; + } + + public void updateIndex() { + index++; + } + + public int getIndex() { + return index; + } + + public int getWeight() { + return weight; + } + } +} diff --git "a/src/main/java/changhyeon/PRO_\354\243\274\354\213\235\352\260\200\352\262\251.java" "b/src/main/java/changhyeon/PRO_\354\243\274\354\213\235\352\260\200\352\262\251.java" new file mode 100644 index 0000000..055bc34 --- /dev/null +++ "b/src/main/java/changhyeon/PRO_\354\243\274\354\213\235\352\260\200\352\262\251.java" @@ -0,0 +1,54 @@ +package changhyeon; + +import java.util.ArrayDeque; +import java.util.Deque; + +public class PRO_주식가격 { + + public int[] solution(int[] prices) { + int[] answer = new int[prices.length]; + Deque stocks = new ArrayDeque<>(); + + for (int price : prices) { + stocks.add(new Stock(price)); + } + + for (int i = 0; i < prices.length; i++) { + Stock stock = stocks.poll(); + + for (int j = i + 1; j < prices.length; j++) { + stock.increaseSecond(); + if (stock.getPrice() > prices[j]) { + break; + } + } + + answer[i] = stock.getSecond(); + } + + return answer; + } + + static class Stock { + + private int second; + private int price; + + public Stock(int price) { + this.second = 0; + this.price = price; + } + + public int getSecond() { + return second; + } + + public int getPrice() { + return price; + } + + public void increaseSecond() { + second++; + } + } +} From 046d8cff7a3af1b6553b1cfb6dfc441bb8a24400 Mon Sep 17 00:00:00 2001 From: changhyeon Date: Mon, 19 Feb 2024 10:39:14 +0900 Subject: [PATCH 50/80] =?UTF-8?q?[10=EC=A3=BC=EC=B0=A8]=20=ED=9E=99=20PRO?= =?UTF-8?q?=5F=EB=8D=94=EB=A7=B5=EA=B2=8C=20=ED=99=A9=EC=B0=BD=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\353\215\224\353\247\265\352\262\214.java" | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 "src/main/java/changhyeon/PRO_\353\215\224\353\247\265\352\262\214.java" diff --git "a/src/main/java/changhyeon/PRO_\353\215\224\353\247\265\352\262\214.java" "b/src/main/java/changhyeon/PRO_\353\215\224\353\247\265\352\262\214.java" new file mode 100644 index 0000000..2426cc6 --- /dev/null +++ "b/src/main/java/changhyeon/PRO_\353\215\224\353\247\265\352\262\214.java" @@ -0,0 +1,35 @@ +package changhyeon; + +import java.util.PriorityQueue; + +public class PRO_더맵게 { + + public int solution(int[] scoville, int K) { + int answer = 0; + PriorityQueue priorityQueue = new PriorityQueue<>(); + + for (int number : scoville) { + priorityQueue.add(number); + } + + while (true) { + if (priorityQueue.size() < 2 && priorityQueue.peek() < K) { + return -1; + } + + Integer num1 = priorityQueue.peek(); + + if (num1 >= K) { + break; + } + + priorityQueue.poll(); + int num2 = priorityQueue.poll(); + int newNumber = num1 + (num2 * 2); + priorityQueue.add(newNumber); + answer++; + } + + return answer; + } +} From 7e40e332dd02a4a6f6404201dc0e303703f00b28 Mon Sep 17 00:00:00 2001 From: BeomSeogKim Date: Mon, 19 Feb 2024 10:40:30 +0900 Subject: [PATCH 51/80] =?UTF-8?q?[10=EC=A3=BC=EC=B0=A8]=20=ED=9E=99=20PRO?= =?UTF-8?q?=5F=EB=8D=94=EB=A7=B5=EA=B2=8C=20=EA=B9=80=EB=B2=94=EC=84=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\353\215\224\353\247\265\352\262\214.java" | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 "src/main/java/tommy/PRO_\353\215\224\353\247\265\352\262\214.java" diff --git "a/src/main/java/tommy/PRO_\353\215\224\353\247\265\352\262\214.java" "b/src/main/java/tommy/PRO_\353\215\224\353\247\265\352\262\214.java" new file mode 100644 index 0000000..2687153 --- /dev/null +++ "b/src/main/java/tommy/PRO_\353\215\224\353\247\265\352\262\214.java" @@ -0,0 +1,25 @@ +package tommy; + +import java.util.PriorityQueue; + +public class PRO_더맵게 { + public int solution(int[] scoville, int K) { + PriorityQueue queue = new PriorityQueue<>(); + for(int s : scoville){ + queue.add(s); + } + + int answer = 0; + int min = queue.peek(); + while(min < K){ + if(queue.size() >= 2){ + queue.add(queue.poll() + (queue.poll() * 2)); + min = queue.peek(); + answer++; + } else { + return -1; + } + } + return answer; + } +} From acce9dbcdcbd71064e9465f96563304163506097 Mon Sep 17 00:00:00 2001 From: changhyeon Date: Mon, 19 Feb 2024 10:49:15 +0900 Subject: [PATCH 52/80] =?UTF-8?q?docs:=20=EB=AC=B8=EC=A0=9C=20=EB=B2=88?= =?UTF-8?q?=ED=98=B8=20=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/README.md b/README.md index cf6a409..5a47ab6 100644 --- a/README.md +++ b/README.md @@ -193,6 +193,22 @@ algorithm-study [63. [레벨1] 폰켓몬](https://school.programmers.co.kr/learn/courses/30/lessons/1845)
[64. [레벨1] 완주하지 못한 선수](https://school.programmers.co.kr/learn/courses/30/lessons/42576)
+### 9주차 + +#### 해시 + +[66. [레벨2] 전화번호 목록](https://school.programmers.co.kr/learn/courses/30/lessons/42577) +[66. [레벨2] 의상](https://school.programmers.co.kr/learn/courses/30/lessons/42578)
+[67. [레벨3] 베스트앨범](https://school.programmers.co.kr/learn/courses/30/lessons/42579)
+ +#### 스택/큐 + +[68. [레벨1] 같은 숫자는 싫어](https://school.programmers.co.kr/learn/courses/30/lessons/12906) +[69. [레벨2] 기능개발](https://school.programmers.co.kr/learn/courses/30/lessons/42586) +[70. [레벨2] 올바른 괄호](https://school.programmers.co.kr/learn/courses/30/lessons/12909) +[71. [레벨2] 다리를 지나는 트럭](https://school.programmers.co.kr/learn/courses/30/lessons/42583) +[72. [레벨2] 주식가격](https://school.programmers.co.kr/learn/courses/30/lessons/42584) + ## 참고 https://code.plus/course/51 From 43c662403bf43c8de3bd28425d8228e0d40d91ff Mon Sep 17 00:00:00 2001 From: BeomSeogKim Date: Mon, 19 Feb 2024 12:07:11 +0900 Subject: [PATCH 53/80] =?UTF-8?q?[10=EC=A3=BC=EC=B0=A8]=20=ED=9E=99=20PRO?= =?UTF-8?q?=5F=EB=94=94=EC=8A=A4=ED=81=AC=EC=BB=A8=ED=8A=B8=EB=A1=A4?= =?UTF-8?q?=EB=9F=AC=20=EA=B9=80=EB=B2=94=EC=84=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\355\212\270\353\241\244\353\237\254.java" | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 "src/main/java/tommy/PRO_\353\224\224\354\212\244\355\201\254\354\273\250\355\212\270\353\241\244\353\237\254.java" diff --git "a/src/main/java/tommy/PRO_\353\224\224\354\212\244\355\201\254\354\273\250\355\212\270\353\241\244\353\237\254.java" "b/src/main/java/tommy/PRO_\353\224\224\354\212\244\355\201\254\354\273\250\355\212\270\353\241\244\353\237\254.java" new file mode 100644 index 0000000..4b137a8 --- /dev/null +++ "b/src/main/java/tommy/PRO_\353\224\224\354\212\244\355\201\254\354\273\250\355\212\270\353\241\244\353\237\254.java" @@ -0,0 +1,55 @@ +package tommy; + +import java.util.Arrays; +import java.util.Comparator; +import java.util.PriorityQueue; + +public class PRO_디스크컨트롤러 { + public int solution(int[][] jobs) { + + Arrays.sort(jobs, (j1, j2) -> j1[0] - j2[0]); + + // duration 적은 순서대로 정렬 + PriorityQueue queue = new PriorityQueue<>(Comparator.comparingInt(JOB::getDuration)); + + int time = 0; + int sum = 0; + int idx = 0; + int count = 0; + + while(count < jobs.length){ + while(idx < jobs.length && jobs[idx][0] <= time){ + queue.add(new JOB(jobs[idx][0], jobs[idx][1])); + idx++; + } + + if (queue.isEmpty()){ + time = jobs[idx][0]; + } else{ + JOB job = queue.poll(); + sum += time + job.getDuration() - job.getStart(); + time += job.getDuration(); + count++; + } + } + return sum / jobs.length; + } + + static class JOB{ + private int start; + private int duration; + + public JOB(int start, int duration){ + this.start = start; + this.duration = duration; + } + + public int getStart(){ + return start; + } + + public int getDuration(){ + return duration; + } + } +} From af3204e5ea0922e09114cf1dafcf8e5e789ac935 Mon Sep 17 00:00:00 2001 From: BeomSeogKim Date: Tue, 20 Feb 2024 11:31:10 +0900 Subject: [PATCH 54/80] =?UTF-8?q?[10=EC=A3=BC=EC=B0=A8]=20=ED=9E=99=20PRO?= =?UTF-8?q?=5F=EC=9D=B4=EC=A4=91=EC=9A=B0=EC=84=A0=EC=88=9C=EC=9C=84?= =?UTF-8?q?=ED=81=90=20=EA=B9=80=EB=B2=94=EC=84=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\354\210\234\354\234\204\355\201\220.java" | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 "src/main/java/tommy/PRO_\354\235\264\354\244\221\354\232\260\354\204\240\354\210\234\354\234\204\355\201\220.java" diff --git "a/src/main/java/tommy/PRO_\354\235\264\354\244\221\354\232\260\354\204\240\354\210\234\354\234\204\355\201\220.java" "b/src/main/java/tommy/PRO_\354\235\264\354\244\221\354\232\260\354\204\240\354\210\234\354\234\204\355\201\220.java" new file mode 100644 index 0000000..664ffba --- /dev/null +++ "b/src/main/java/tommy/PRO_\354\235\264\354\244\221\354\232\260\354\204\240\354\210\234\354\234\204\355\201\220.java" @@ -0,0 +1,40 @@ +package tommy; + +import java.util.PriorityQueue; + +public class PRO_이중우선순위큐 { + /* + * 시간 복잡도 : O(N) + * 공간 복잡도 : O(2N) => queue 두개. + */ + public int[] solution(String[] operations) { + PriorityQueue queue1 = new PriorityQueue<>(); // 오름차순 + PriorityQueue queue2 = new PriorityQueue<>((n1, n2) -> n2 - n1); // 내림차순 + + for(String operation : operations){ + String operator = operation.split(" ")[0]; + String number = operation.split(" ")[1]; + if (operator.equals("I")){ + queue1.add(Integer.valueOf(number)); + queue2.add(Integer.valueOf(number)); + } else { + if(!queue1.isEmpty()){ + if (number.equals("1")){ // 최댓 값 삭제 + int max = queue2.peek(); + queue1.remove(max); + queue2.remove(max); + } else{ // 최소 값 삭제 + int min = queue1.peek(); + queue1.remove(min); + queue2.remove(min); + } + } + } + } + if (queue1.isEmpty()){ + return new int[]{0,0}; + } else{ + return new int[]{queue2.peek(), queue1.peek()}; + } + } +} From d72be6cfab16b5873491b1b95aa43b01056a351f Mon Sep 17 00:00:00 2001 From: changhyeon Date: Tue, 20 Feb 2024 14:11:01 +0900 Subject: [PATCH 55/80] =?UTF-8?q?[10=EC=A3=BC=EC=B0=A8]=20=ED=9E=99=20PRO?= =?UTF-8?q?=5F=EC=9D=B4=EC=A4=91=EC=9A=B0=EC=84=A0=EC=88=9C=EC=9C=84?= =?UTF-8?q?=ED=81=90=20=ED=99=A9=EC=B0=BD=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\354\210\234\354\234\204\355\201\220.java" | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 "src/main/java/changhyeon/PRO_\354\235\264\354\244\221\354\232\260\354\204\240\354\210\234\354\234\204\355\201\220.java" diff --git "a/src/main/java/changhyeon/PRO_\354\235\264\354\244\221\354\232\260\354\204\240\354\210\234\354\234\204\355\201\220.java" "b/src/main/java/changhyeon/PRO_\354\235\264\354\244\221\354\232\260\354\204\240\354\210\234\354\234\204\355\201\220.java" new file mode 100644 index 0000000..bfab4a4 --- /dev/null +++ "b/src/main/java/changhyeon/PRO_\354\235\264\354\244\221\354\232\260\354\204\240\354\210\234\354\234\204\355\201\220.java" @@ -0,0 +1,58 @@ +package changhyeon; + +import java.util.PriorityQueue; + +public class PRO_이중우선순위큐 { + + PriorityQueue queue = new PriorityQueue<>(); + + public int[] solution(String[] operations) { + for (String operation : operations) { + String[] line = operation.split(" "); + String order = line[0]; + int number = Integer.parseInt(line[1]); + + if (order.equals("I")) { + addNumber(number); + continue; + } + + deleteNumber(number); + } + + if (queue.isEmpty()) { // 큐가 비었을 때 + return new int[] {0, 0}; + } + + int max = -10000000; + for (int num : queue) { // 최대 값 + if (num > max) { + max = num; + } + } + + return new int[] {max, queue.poll()}; + } + + private void addNumber(int number) { + queue.add(number); + } + + private void deleteNumber(int number) { + if (!queue.isEmpty()) { // 큐가 비지 않았을 때 + if (number == 1) { // 1이면 최대 값 삭제 + int max = -10000000; + for (int num : queue) { + if (num > max) { + max = num; + } + } + + queue.remove(max); + return; + } + + queue.poll(); // -1이면 최소 값 삭제 + } + } +} From 0229de7bbfc786a09e84000f73046c90547dcda3 Mon Sep 17 00:00:00 2001 From: changhyeon Date: Tue, 20 Feb 2024 14:40:00 +0900 Subject: [PATCH 56/80] =?UTF-8?q?[10=EC=A3=BC=EC=B0=A8]=20=ED=9E=99=20PRO?= =?UTF-8?q?=5FK=EB=B2=88=EC=A7=B8=EC=88=98=20=ED=99=A9=EC=B0=BD=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\353\262\210\354\247\270\354\210\230.java" | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 "src/main/java/changhyeon/PRO_K\353\262\210\354\247\270\354\210\230.java" diff --git "a/src/main/java/changhyeon/PRO_K\353\262\210\354\247\270\354\210\230.java" "b/src/main/java/changhyeon/PRO_K\353\262\210\354\247\270\354\210\230.java" new file mode 100644 index 0000000..8bb2355 --- /dev/null +++ "b/src/main/java/changhyeon/PRO_K\353\262\210\354\247\270\354\210\230.java" @@ -0,0 +1,39 @@ +package changhyeon; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public class PRO_K번째수 { + + public int[] solution(int[] array, int[][] commands) { + int[] answer = new int[commands.length]; + + for (int i = 0; i < commands.length; i++) { + answer[i] = doProcess(array, commands[i]); + } + + return answer; + } + + private int doProcess(int[] array, int[] command) { + int start = command[0]; + int end = command[1]; + int select = command[2]; + List slicedArray = slice(array, start, end); + + Collections.sort(slicedArray); + + return slicedArray.get(select - 1); + } + + private List slice(int[] array, int start, int end) { + List slicedArray = new ArrayList<>(); + + for (int i = start - 1; i <= end - 1; i++) { + slicedArray.add(array[i]); + } + + return slicedArray; + } +} From 26f7901a372ce8bd31d0f70e5382975cfb4bb8b3 Mon Sep 17 00:00:00 2001 From: BeomSeogKim Date: Tue, 20 Feb 2024 15:19:48 +0900 Subject: [PATCH 57/80] =?UTF-8?q?[10=EC=A3=BC=EC=B0=A8]=20=EC=A0=95?= =?UTF-8?q?=EB=A0=AC=20K=EB=B2=88=EC=A7=B8=EC=88=98=20=EA=B9=80=EB=B2=94?= =?UTF-8?q?=EC=84=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\353\262\210\354\247\270\354\210\230.java" | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 "src/main/java/tommy/PRO_K\353\262\210\354\247\270\354\210\230.java" diff --git "a/src/main/java/tommy/PRO_K\353\262\210\354\247\270\354\210\230.java" "b/src/main/java/tommy/PRO_K\353\262\210\354\247\270\354\210\230.java" new file mode 100644 index 0000000..6f71f26 --- /dev/null +++ "b/src/main/java/tommy/PRO_K\353\262\210\354\247\270\354\210\230.java" @@ -0,0 +1,23 @@ +package tommy; + +import java.util.Arrays; + +public class PRO_K번째수 { + /* + * Time Complexity : O(N^2 logN) + * Space Complexity : O(N) + */ + public int[] solution(int[] array, int[][] commands) { + int[] answer = new int[commands.length]; + for(int i = 0; i < commands.length; i++){ + int[] ints = Arrays.stream(array) + .skip(commands[i][0] - 1) + .limit(commands[i][1] - commands[i][0] + 1) + .sorted() + .toArray(); + answer[i] = ints[commands[i][2] - 1]; + } + + return answer; + } +} From 1e3b70ac5227ce496c7e5807370490e325c6128e Mon Sep 17 00:00:00 2001 From: changhyeon Date: Tue, 20 Feb 2024 20:36:57 +0900 Subject: [PATCH 58/80] =?UTF-8?q?[10=EC=A3=BC=EC=B0=A8]=20=ED=9E=99=20PRO?= =?UTF-8?q?=5F=EB=94=94=EC=8A=A4=ED=81=AC=EC=BB=A8=ED=8A=B8=EB=A1=A4?= =?UTF-8?q?=EB=9F=AC=20=ED=99=A9=EC=B0=BD=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\355\212\270\353\241\244\353\237\254.java" | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 "src/main/java/changhyeon/PRO_\353\224\224\354\212\244\355\201\254\354\273\250\355\212\270\353\241\244\353\237\254.java" diff --git "a/src/main/java/changhyeon/PRO_\353\224\224\354\212\244\355\201\254\354\273\250\355\212\270\353\241\244\353\237\254.java" "b/src/main/java/changhyeon/PRO_\353\224\224\354\212\244\355\201\254\354\273\250\355\212\270\353\241\244\353\237\254.java" new file mode 100644 index 0000000..6f0d1f8 --- /dev/null +++ "b/src/main/java/changhyeon/PRO_\353\224\224\354\212\244\355\201\254\354\273\250\355\212\270\353\241\244\353\237\254.java" @@ -0,0 +1,37 @@ +package changhyeon; + +import java.util.Arrays; +import java.util.Comparator; +import java.util.PriorityQueue; + +public class PRO_디스크컨트롤러 { + + public int solution(int[][] jobs) { + Arrays.sort(jobs, Comparator.comparingInt(job -> job[0])); + + PriorityQueue priorityQueue = new PriorityQueue<>((job1, job2) -> job1[1] - job2[1]); + + int index = 0; + int count = 0; + int total = 0; + int end = 0; + + while (count < jobs.length) { + + while (index < jobs.length && jobs[index][0] <= end) { + priorityQueue.add(jobs[index++]); + } + + if (priorityQueue.isEmpty()) { + end = jobs[index][0]; + } else { + int[] cur = priorityQueue.poll(); + total += cur[1] + end - cur[0]; + end += cur[1]; + count++; + } + } + + return total / jobs.length; + } +} From cb2f236371eb422535e5a4fd48276ea11ba4123a Mon Sep 17 00:00:00 2001 From: BeomSeogKim Date: Wed, 21 Feb 2024 10:45:39 +0900 Subject: [PATCH 59/80] =?UTF-8?q?[10=EC=A3=BC=EC=B0=A8]=20=EC=A0=95?= =?UTF-8?q?=EB=A0=AC=20PRO=5F=EA=B0=80=EC=9E=A5=20=ED=81=B0=20=EC=88=98=20?= =?UTF-8?q?=EA=B9=80=EB=B2=94=EC=84=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\354\236\245\355\201\260\354\210\230.java" | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 "src/main/java/tommy/PRO_\352\260\200\354\236\245\355\201\260\354\210\230.java" diff --git "a/src/main/java/tommy/PRO_\352\260\200\354\236\245\355\201\260\354\210\230.java" "b/src/main/java/tommy/PRO_\352\260\200\354\236\245\355\201\260\354\210\230.java" new file mode 100644 index 0000000..bf0c9eb --- /dev/null +++ "b/src/main/java/tommy/PRO_\352\260\200\354\236\245\355\201\260\354\210\230.java" @@ -0,0 +1,25 @@ +package tommy; + +import java.util.Arrays; + +public class PRO_가장큰수 { + + /* + * Time Complexity : O(N) + * Space Complexity : O(N) + */ + public String solution(int[] numbers) { + String[] strings = new String[numbers.length]; + + for(int i = 0; i < numbers.length; i++){ + strings[i] = numbers[i] + ""; + } + + Arrays.sort(strings, (s1, s2) -> (s2 + s1).compareTo((s1 + s2))); + StringBuilder sb = new StringBuilder(); + for(String s : strings){ + sb.append(s); + } + return sb.toString().charAt(0) == '0' ? "0" : sb.toString(); + } +} From 205feb6b1f7ba878d4663a4423a475942d364030 Mon Sep 17 00:00:00 2001 From: BeomSeogKim Date: Wed, 21 Feb 2024 22:32:21 +0900 Subject: [PATCH 60/80] =?UTF-8?q?[10=EC=A3=BC=EC=B0=A8]=20=EC=A0=95?= =?UTF-8?q?=EB=A0=AC=20PRO=5FH-Index=20=EA=B9=80=EB=B2=94=EC=84=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/tommy/PRO_HIndex.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 src/main/java/tommy/PRO_HIndex.java diff --git a/src/main/java/tommy/PRO_HIndex.java b/src/main/java/tommy/PRO_HIndex.java new file mode 100644 index 0000000..4c1b666 --- /dev/null +++ b/src/main/java/tommy/PRO_HIndex.java @@ -0,0 +1,15 @@ +package tommy; + +import java.util.Arrays; + +public class PRO_HIndex { + public int solution(int[] citations) { + Arrays.sort(citations); // 오름 차순 정렬 + int answer = 0; + for(int i = 0; i < citations.length; i++){ + int small = Math.min(citations.length - i, citations[i]); + answer = Math.max(small, answer); + } + return answer; + } +} From 175dff4b37f36f592d674b0256f648296c629366 Mon Sep 17 00:00:00 2001 From: BeomSeogKim Date: Thu, 22 Feb 2024 10:29:49 +0900 Subject: [PATCH 61/80] =?UTF-8?q?[10=EC=A3=BC=EC=B0=A8]=20=EC=99=84?= =?UTF-8?q?=EC=A0=84=ED=83=90=EC=83=89=20PRO=5F=EC=86=8C=EC=88=98=EC=B0=BE?= =?UTF-8?q?=EA=B8=B0=20=EA=B9=80=EB=B2=94=EC=84=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\354\210\230\354\260\276\352\270\260.java" | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 "src/main/java/tommy/PRO_\354\206\214\354\210\230\354\260\276\352\270\260.java" diff --git "a/src/main/java/tommy/PRO_\354\206\214\354\210\230\354\260\276\352\270\260.java" "b/src/main/java/tommy/PRO_\354\206\214\354\210\230\354\260\276\352\270\260.java" new file mode 100644 index 0000000..33e9125 --- /dev/null +++ "b/src/main/java/tommy/PRO_\354\206\214\354\210\230\354\260\276\352\270\260.java" @@ -0,0 +1,57 @@ +package tommy; + +import java.util.HashSet; +import java.util.Set; + +public class PRO_소수찾기 { + static boolean[] visited = new boolean[7]; + static Set set = new HashSet<>(); + static String number = ""; + + /* + * Time Complexity : O(N ^ 2) + * Space Complexity : O(N) + */ + public int solution(String numbers) { + number = numbers; + // Initialization + dfs("", 0); + + int answer = 0; + for(int i : set){ + if(isPrime(i)){ + answer++; + } + } + + return answer; + } + + void dfs(String s, int depth){ + if(depth == number.length()){ + return; + } + + for(int i = 0; i < number.length(); i++){ + if (!visited[i]){ + visited[i] = true; + set.add(Integer.valueOf(s + number.charAt(i))); + dfs(s + number.charAt(i), depth + 1); + visited[i] = false; + } + } + } + + boolean isPrime(int n){ + if (n < 2){ + return false; + } + for(int i = 2; i <= n / 2; i++){ + if(n % i == 0){ + return false; + } + } + + return true; + } +} From 9da52c03fece3ba9d8a485a36d9ce8658b1cf262 Mon Sep 17 00:00:00 2001 From: changhyeon Date: Thu, 22 Feb 2024 11:51:25 +0900 Subject: [PATCH 62/80] =?UTF-8?q?[10=EC=A3=BC=EC=B0=A8]=20=EC=99=84?= =?UTF-8?q?=EC=A0=84=ED=83=90=EC=83=89=20PRO=5F=EC=86=8C=EC=88=98=EC=B0=BE?= =?UTF-8?q?=EA=B8=B0=20=ED=99=A9=EC=B0=BD=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\354\210\230\354\260\276\352\270\260.java" | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 "src/main/java/changhyeon/PRO_\354\206\214\354\210\230\354\260\276\352\270\260.java" diff --git "a/src/main/java/changhyeon/PRO_\354\206\214\354\210\230\354\260\276\352\270\260.java" "b/src/main/java/changhyeon/PRO_\354\206\214\354\210\230\354\260\276\352\270\260.java" new file mode 100644 index 0000000..0864cc1 --- /dev/null +++ "b/src/main/java/changhyeon/PRO_\354\206\214\354\210\230\354\260\276\352\270\260.java" @@ -0,0 +1,58 @@ +package changhyeon; + +import java.util.HashSet; +import java.util.Set; + +public class PRO_소수찾기 { + + private boolean[] visited; + private Set set = new HashSet<>(); + + public int solution(String numbers) { + int answer = 0; + + for (int i = 0; i < numbers.length(); i++) { + if (numbers.charAt(i) == '0') + continue; + visited = new boolean[numbers.length()]; + visited[i] = true; + recursive(numbers, 0, String.valueOf(numbers.charAt(i))); + } + + return set.size(); + } + + private void recursive(String numbers, int count, String str) { + if (count == numbers.length()) { + return; + } + + if (isPrime(str)) { + set.add(str); + } + + for (int i = 0; i < numbers.length(); i++) { + if (!visited[i]) { + visited[i] = true; + recursive(numbers, count + 1, str + String.valueOf(numbers.charAt(i))); + visited[i] = false; + } + } + } + + private boolean isPrime(String str) { + int number = Integer.parseInt(str); + int sum = 0; + + if (number == 0 || number == 1) + return false; + + for (int i = 2; i <= number / 2; i++) { + if (number % i == 0) { + return false; + } + } + + return true; + } +} From 8497e15c25307743a9f6db798700a0e27c59933e Mon Sep 17 00:00:00 2001 From: changhyeon Date: Thu, 22 Feb 2024 11:58:38 +0900 Subject: [PATCH 63/80] =?UTF-8?q?[10=EC=A3=BC=EC=B0=A8]=20=EC=A0=95?= =?UTF-8?q?=EB=A0=AC=20PRO=5FH-index=20=ED=99=A9=EC=B0=BD=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/changhyeon/PRO_HIndex.java | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 src/main/java/changhyeon/PRO_HIndex.java diff --git a/src/main/java/changhyeon/PRO_HIndex.java b/src/main/java/changhyeon/PRO_HIndex.java new file mode 100644 index 0000000..9fc7e13 --- /dev/null +++ b/src/main/java/changhyeon/PRO_HIndex.java @@ -0,0 +1,24 @@ +package changhyeon; + +import java.util.Arrays; + +public class PRO_HIndex { + + public int solution(int[] citations) { + int answer = 0; + Arrays.sort(citations); + + for (int i = 0; i < citations.length; i++) { + int smaller = Math.min(citations[i], citations.length - i); + + if (smaller >= answer) { + answer = Math.max(answer, smaller); + continue; + } + + break; + } + + return answer; + } +} From 520af248ab861b914d05575386555d1607d4c023 Mon Sep 17 00:00:00 2001 From: BeomSeogKim Date: Thu, 22 Feb 2024 17:44:41 +0900 Subject: [PATCH 64/80] =?UTF-8?q?[10=EC=A3=BC=EC=B0=A8]=20=EC=99=84?= =?UTF-8?q?=EC=A0=84=ED=83=90=EC=83=89=20PRO=5F=EC=B9=B4=ED=8E=AB=20?= =?UTF-8?q?=EA=B9=80=EB=B2=94=EC=84=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tommy/PRO_\354\271\264\355\216\253.java" | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 "src/main/java/tommy/PRO_\354\271\264\355\216\253.java" diff --git "a/src/main/java/tommy/PRO_\354\271\264\355\216\253.java" "b/src/main/java/tommy/PRO_\354\271\264\355\216\253.java" new file mode 100644 index 0000000..a4d30b4 --- /dev/null +++ "b/src/main/java/tommy/PRO_\354\271\264\355\216\253.java" @@ -0,0 +1,20 @@ +package tommy; + +public class PRO_카펫 { + public int[] solution(int brown, int yellow) { + int sum = brown + yellow; + + for(int i = 3; i < sum; i++){ + int j = sum / i; + if(sum % i == 0 && j >= 3){ + int col = Math.min(i, j); + int row = Math.max(i, j); + int area = (col - 2) * (row - 2); + if(area == yellow){ + return new int[]{row, col}; + } + } + } + return new int[]{}; + } +} From 595adebe528693193c91bcbad7afaa0d6a0a12ef Mon Sep 17 00:00:00 2001 From: changhyeon Date: Fri, 23 Feb 2024 09:58:32 +0900 Subject: [PATCH 65/80] =?UTF-8?q?[10=EC=A3=BC=EC=B0=A8]=20=EC=99=84?= =?UTF-8?q?=EC=A0=84=ED=83=90=EC=83=89=20PRO=5F=EC=B9=B4=ED=8E=AB=20?= =?UTF-8?q?=ED=99=A9=EC=B0=BD=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PRO_\354\271\264\355\216\253.java" | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 "src/main/java/changhyeon/PRO_\354\271\264\355\216\253.java" diff --git "a/src/main/java/changhyeon/PRO_\354\271\264\355\216\253.java" "b/src/main/java/changhyeon/PRO_\354\271\264\355\216\253.java" new file mode 100644 index 0000000..104edec --- /dev/null +++ "b/src/main/java/changhyeon/PRO_\354\271\264\355\216\253.java" @@ -0,0 +1,24 @@ +package changhyeon; + +public class PRO_카펫 { + + public int[] solution(int brown, int yellow) { + int[] answer = new int[2]; + + for (int width = 1; width <= 5000; width++) { + for (int height = 1; height <= width; height++) { + + int brownTile = (width + height - 2) * 2; + int yellowTile = width * height - brownTile; + + if (brownTile == brown && yellowTile == yellow) { + answer[0] = width; + answer[1] = height; + break; + } + } + } + + return answer; + } +} From 4cde8763eb2fbb6b2da1bd2b2c852799ff373ac8 Mon Sep 17 00:00:00 2001 From: changhyeon Date: Sat, 24 Feb 2024 13:44:18 +0900 Subject: [PATCH 66/80] =?UTF-8?q?docs:=20=EB=AC=B8=EC=A0=9C=20=EC=97=85?= =?UTF-8?q?=EB=8D=B0=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 5a47ab6..a3c40e3 100644 --- a/README.md +++ b/README.md @@ -197,17 +197,38 @@ algorithm-study #### 해시 -[66. [레벨2] 전화번호 목록](https://school.programmers.co.kr/learn/courses/30/lessons/42577) +[66. [레벨2] 전화번호 목록](https://school.programmers.co.kr/learn/courses/30/lessons/42577)
[66. [레벨2] 의상](https://school.programmers.co.kr/learn/courses/30/lessons/42578)
[67. [레벨3] 베스트앨범](https://school.programmers.co.kr/learn/courses/30/lessons/42579)
#### 스택/큐 -[68. [레벨1] 같은 숫자는 싫어](https://school.programmers.co.kr/learn/courses/30/lessons/12906) -[69. [레벨2] 기능개발](https://school.programmers.co.kr/learn/courses/30/lessons/42586) -[70. [레벨2] 올바른 괄호](https://school.programmers.co.kr/learn/courses/30/lessons/12909) -[71. [레벨2] 다리를 지나는 트럭](https://school.programmers.co.kr/learn/courses/30/lessons/42583) -[72. [레벨2] 주식가격](https://school.programmers.co.kr/learn/courses/30/lessons/42584) +[68. [레벨1] 같은 숫자는 싫어](https://school.programmers.co.kr/learn/courses/30/lessons/12906)
+[69. [레벨2] 기능개발](https://school.programmers.co.kr/learn/courses/30/lessons/42586)
+[70. [레벨2] 올바른 괄호](https://school.programmers.co.kr/learn/courses/30/lessons/12909)
+[71. [레벨2] 다리를 지나는 트럭](https://school.programmers.co.kr/learn/courses/30/lessons/42583)
+[72. [레벨2] 주식가격](https://school.programmers.co.kr/learn/courses/30/lessons/42584)
+ +### 10주차 + +#### 힙 + +[73. [레벨2] 더 맵게](https://school.programmers.co.kr/learn/courses/30/lessons/42626)
+[74. [레벨3] 디스크 컨트롤러](https://school.programmers.co.kr/learn/courses/30/lessons/42627)
+[75. [레벨3] 이중우선순위큐](https://school.programmers.co.kr/learn/courses/30/lessons/42628)
+ +#### 정렬 + +[76. [레벨1] K번째수](https://school.programmers.co.kr/learn/courses/30/lessons/42748)
+[77. [레벨2] 가장 큰 수](https://school.programmers.co.kr/learn/courses/30/lessons/42746)
+[78. [레벨2] H-Index](https://school.programmers.co.kr/learn/courses/30/lessons/42747)
+ +#### 완전탐색 + +[79. [레벨2] 소수 찾기](https://school.programmers.co.kr/learn/courses/30/lessons/42839)
+[80. [레벨2] 카펫](https://school.programmers.co.kr/learn/courses/30/lessons/42842)
+[81. [레벨2] 피로도](https://school.programmers.co.kr/learn/courses/30/lessons/87946)
+[82. [레벨2] 전력망을 둘로 나누기](https://school.programmers.co.kr/learn/courses/30/lessons/86971)
## 참고 From 31ca3735f0ef353d45c12dc2ba6f978b0406164a Mon Sep 17 00:00:00 2001 From: BeomSeogKim Date: Mon, 26 Feb 2024 10:23:04 +0900 Subject: [PATCH 67/80] =?UTF-8?q?[11=EC=A3=BC=EC=B0=A8]=20=EC=99=84?= =?UTF-8?q?=EC=A0=84=ED=83=90=EC=83=89=20PRO=5F=EB=AA=A8=EC=9D=8C=EC=82=AC?= =?UTF-8?q?=EC=A0=84=20=EA=B9=80=EB=B2=94=EC=84=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\354\235\214\354\202\254\354\240\204.java" | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 "src/main/java/tommy/PRO_\353\252\250\354\235\214\354\202\254\354\240\204.java" diff --git "a/src/main/java/tommy/PRO_\353\252\250\354\235\214\354\202\254\354\240\204.java" "b/src/main/java/tommy/PRO_\353\252\250\354\235\214\354\202\254\354\240\204.java" new file mode 100644 index 0000000..1df7177 --- /dev/null +++ "b/src/main/java/tommy/PRO_\353\252\250\354\235\214\354\202\254\354\240\204.java" @@ -0,0 +1,32 @@ +package tommy; + +import java.util.List; +import java.util.ArrayList; + +public class PRO_모음사전 { + static String[] words = new String[]{"A", "E", "I", "O", "U"}; + static List list = new ArrayList<>(); + + public int solution(String word) { + recursion(0, ""); + + for(int i = 0; i < list.size(); i++){ + if (list.get(i).equals(word)){ + return i; + } + } + + return 0; + } + + void recursion(int depth, String word){ + list.add(word); + if(depth == 5){ + return; + } + + for(int i = 0; i < 5; i++){ + recursion(depth + 1, word + words[i]); + } + } +} From 867a6d20a4f399923eeb51430c68a4b80ce1b869 Mon Sep 17 00:00:00 2001 From: changhyeon Date: Mon, 26 Feb 2024 10:24:33 +0900 Subject: [PATCH 68/80] =?UTF-8?q?[11=EC=A3=BC=EC=B0=A8]=20=EC=99=84?= =?UTF-8?q?=EC=A0=84=ED=83=90=EC=83=89=20PRO=5F=EC=A0=84=EB=A0=A5=EB=A7=9D?= =?UTF-8?q?=EB=91=98=EB=A1=9C=EB=82=98=EB=88=84=EA=B8=B0=20=ED=99=A9?= =?UTF-8?q?=EC=B0=BD=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\353\202\230\353\210\204\352\270\260.java" | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 "src/main/java/changhyeon/PRO_\354\240\204\353\240\245\353\247\235\353\221\230\353\241\234\353\202\230\353\210\204\352\270\260.java" diff --git "a/src/main/java/changhyeon/PRO_\354\240\204\353\240\245\353\247\235\353\221\230\353\241\234\353\202\230\353\210\204\352\270\260.java" "b/src/main/java/changhyeon/PRO_\354\240\204\353\240\245\353\247\235\353\221\230\353\241\234\353\202\230\353\210\204\352\270\260.java" new file mode 100644 index 0000000..e126635 --- /dev/null +++ "b/src/main/java/changhyeon/PRO_\354\240\204\353\240\245\353\247\235\353\221\230\353\241\234\353\202\230\353\210\204\352\270\260.java" @@ -0,0 +1,31 @@ +package changhyeon; + +public class PRO_전력망둘로나누기 { + + private final static String[] stringArray = {"A", "E", "I", "O", "U"}; + private final static int MAX_NUMBER = 5; + private static boolean flag = false; + private static int sum = 0; + + public int solution(String word) { + recursive(0, "", word); + + return sum - 1; + } + + private void recursive(int count, String currentWord, String word) { + if (count > MAX_NUMBER || flag) { + return; + } + + sum++; + + if (currentWord.equals(word)) { + flag = true; + } + + for (int i = 0; i < stringArray.length; i++) { + recursive(count + 1, currentWord + stringArray[i], word); + } + } +} From aa13e9852a04abdc9af5c65bbac06236e3ed9fd4 Mon Sep 17 00:00:00 2001 From: changhyeon Date: Mon, 26 Feb 2024 10:51:48 +0900 Subject: [PATCH 69/80] =?UTF-8?q?[11=EC=A3=BC=EC=B0=A8]=20=EC=99=84?= =?UTF-8?q?=EC=A0=84=ED=83=90=EC=83=89=20PRO=5F=EC=A0=84=EB=A0=A5=EB=A7=9D?= =?UTF-8?q?=EB=91=98=EB=A1=9C=EB=82=98=EB=88=84=EA=B8=B0,=20PRO=5F?= =?UTF-8?q?=EB=AA=A8=EC=9D=8C=EC=82=AC=EC=A0=84=20=ED=99=A9=EC=B0=BD?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\354\235\214\354\202\254\354\240\204.java" | 31 ++++++++++ ...\353\202\230\353\210\204\352\270\260.java" | 59 ++++++++++++++----- 2 files changed, 74 insertions(+), 16 deletions(-) create mode 100644 "src/main/java/changhyeon/PRO_\353\252\250\354\235\214\354\202\254\354\240\204.java" diff --git "a/src/main/java/changhyeon/PRO_\353\252\250\354\235\214\354\202\254\354\240\204.java" "b/src/main/java/changhyeon/PRO_\353\252\250\354\235\214\354\202\254\354\240\204.java" new file mode 100644 index 0000000..48c7f09 --- /dev/null +++ "b/src/main/java/changhyeon/PRO_\353\252\250\354\235\214\354\202\254\354\240\204.java" @@ -0,0 +1,31 @@ +package changhyeon; + +public class PRO_모음사전 { + + private final static String[] stringArray = {"A", "E", "I", "O", "U"}; + private final static int MAX_NUMBER = 5; + private static boolean flag = false; + private static int sum = 0; + + public int solution(String word) { + recursive(0, "", word); + + return sum - 1; + } + + private void recursive(int count, String currentWord, String word) { + if (count > MAX_NUMBER || flag) { + return; + } + + sum++; + + if (currentWord.equals(word)) { + flag = true; + } + + for (int i = 0; i < stringArray.length; i++) { + recursive(count + 1, currentWord + stringArray[i], word); + } + } +} diff --git "a/src/main/java/changhyeon/PRO_\354\240\204\353\240\245\353\247\235\353\221\230\353\241\234\353\202\230\353\210\204\352\270\260.java" "b/src/main/java/changhyeon/PRO_\354\240\204\353\240\245\353\247\235\353\221\230\353\241\234\353\202\230\353\210\204\352\270\260.java" index e126635..12e2503 100644 --- "a/src/main/java/changhyeon/PRO_\354\240\204\353\240\245\353\247\235\353\221\230\353\241\234\353\202\230\353\210\204\352\270\260.java" +++ "b/src/main/java/changhyeon/PRO_\354\240\204\353\240\245\353\247\235\353\221\230\353\241\234\353\202\230\353\210\204\352\270\260.java" @@ -1,31 +1,58 @@ package changhyeon; +import java.util.ArrayDeque; +import java.util.Deque; + public class PRO_전력망둘로나누기 { - private final static String[] stringArray = {"A", "E", "I", "O", "U"}; - private final static int MAX_NUMBER = 5; - private static boolean flag = false; - private static int sum = 0; + private static int[][] map; - public int solution(String word) { - recursive(0, "", word); + public int solution(int n, int[][] wires) { + int answer = n; - return sum - 1; - } + map = new int[n + 1][n + 1]; + + for (int i = 0; i < wires.length; i++) { + int from = wires[i][0]; + int to = wires[i][1]; - private void recursive(int count, String currentWord, String word) { - if (count > MAX_NUMBER || flag) { - return; + map[from][to] = 1; + map[to][from] = 1; } - sum++; + for (int i = 0; i < wires.length; i++) { + int from = wires[i][0]; + int to = wires[i][1]; - if (currentWord.equals(word)) { - flag = true; + map[from][to] = 0; + map[to][from] = 0; + answer = Math.min(answer, bfs(n, from)); + map[from][to] = 1; + map[to][from] = 1; } - for (int i = 0; i < stringArray.length; i++) { - recursive(count + 1, currentWord + stringArray[i], word); + return answer; + } + + private int bfs(int n, int from) { + boolean[] visited = new boolean[n + 1]; + Deque deque = new ArrayDeque<>(); + int count = 1; + deque.add(from); + visited[from] = true; + + while (!deque.isEmpty()) { + int temp = deque.poll(); + + for (int i = 1; i <= n; i++) { + if (!visited[i] && map[temp][i] == 1) { + visited[i] = true; + deque.add(i); + count++; + } + } } + + return (int)Math.abs(count - (n - count)); } } From 9319fe28c8deeb987fc4b420e38f31072131b68f Mon Sep 17 00:00:00 2001 From: changhyeon Date: Mon, 26 Feb 2024 10:53:00 +0900 Subject: [PATCH 70/80] =?UTF-8?q?[11=EC=A3=BC=EC=B0=A8]=20=ED=83=90?= =?UTF-8?q?=EC=9A=95=EB=B2=95=20PRO=5F=EC=B2=B4=EC=9C=A1=EB=B3=B5=20?= =?UTF-8?q?=ED=99=A9=EC=B0=BD=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\354\262\264\354\234\241\353\263\265.java" | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 "src/main/java/changhyeon/PRO_\354\262\264\354\234\241\353\263\265.java" diff --git "a/src/main/java/changhyeon/PRO_\354\262\264\354\234\241\353\263\265.java" "b/src/main/java/changhyeon/PRO_\354\262\264\354\234\241\353\263\265.java" new file mode 100644 index 0000000..f32c910 --- /dev/null +++ "b/src/main/java/changhyeon/PRO_\354\262\264\354\234\241\353\263\265.java" @@ -0,0 +1,47 @@ +package changhyeon; + +import java.util.ArrayList; +import java.util.Arrays; + +public class PRO_체육복 { + + public int solution(int n, int[] lost, int[] reserve) { + ArrayList reserveList = new ArrayList<>(); + ArrayList lostList = new ArrayList<>(); + int count = 0; + Arrays.sort(lost); + Arrays.sort(reserve); + + for (int i : reserve) { + reserveList.add(i); + } + + for (int i : lost) { + lostList.add(i); + } + + for (int num : lost) { + if (lostList.size() != 0 && reserveList.size() != 0 && reserveList.contains(num)) { + lostList.remove(Integer.valueOf(num)); + reserveList.remove(Integer.valueOf(num)); + count++; + } + } + + for (int num : lostList) { + if (reserveList.size() != 0 && reserveList.contains(num - 1)) { + reserveList.remove(Integer.valueOf(num - 1)); + count++; + continue; + } + if (reserveList.size() != 0 && reserveList.contains(num + 1)) { + reserveList.remove(Integer.valueOf(num + 1)); + count++; + continue; + } + + } + + return n - lost.length + count; + } +} From 124ffa63fa141ce630752e41b6a0063f482f03bd Mon Sep 17 00:00:00 2001 From: BeomSeogKim Date: Tue, 27 Feb 2024 12:26:03 +0900 Subject: [PATCH 71/80] =?UTF-8?q?[11=EC=A3=BC=EC=B0=A8]=20=ED=83=90?= =?UTF-8?q?=EC=9A=95=EB=B2=95=20PRO=5F=EC=A1=B0=EC=9D=B4=EC=8A=A4=ED=8B=B1?= =?UTF-8?q?=20=EA=B9=80=EB=B2=94=EC=84=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\354\235\264\354\212\244\355\213\261.java" | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 "src/main/java/tommy/PRO_\354\241\260\354\235\264\354\212\244\355\213\261.java" diff --git "a/src/main/java/tommy/PRO_\354\241\260\354\235\264\354\212\244\355\213\261.java" "b/src/main/java/tommy/PRO_\354\241\260\354\235\264\354\212\244\355\213\261.java" new file mode 100644 index 0000000..35bab73 --- /dev/null +++ "b/src/main/java/tommy/PRO_\354\241\260\354\235\264\354\212\244\355\213\261.java" @@ -0,0 +1,21 @@ +package tommy; + +public class PRO_조이스틱 { + public int solution(String name) { + int answer = 0; + int move = name.length() - 1; // 단순하게 오른쪽으로만 움직일 경우의 move count + + for(int i = 0; i < name.length(); i++){ + answer += Math.min(name.charAt(i) - 'A', 26 - (name.charAt(i) - 'A')); // 조이스틱 위아래 move + if(i < name.length() - 1 && name.charAt(i + 1) == 'A'){ // 다음 글자가 A 라면 + int pointer = i + 1; + while(pointer < name.length() && name.charAt(pointer) == 'A'){ + pointer++; + } + move = Math.min(move, i * 2 + (name.length() - pointer)); // 오른쪽으로 갔다가 왼쪽으로 돌아가는 경우 + move = Math.min(move, i + 2 * (name.length() - pointer)); // 왼쪽으로 갔다가 오른쪽으로 돌아가는 경우 + } + } + return answer + move; + } +} From 0e0497a6db8d82b2b49c35e0e3ae1fcd2b6e323a Mon Sep 17 00:00:00 2001 From: changhyeon Date: Wed, 28 Feb 2024 09:40:17 +0900 Subject: [PATCH 72/80] =?UTF-8?q?[11=EC=A3=BC=EC=B0=A8]=20=ED=83=90?= =?UTF-8?q?=EC=9A=95=EB=B2=95=20PRO=5F=EC=A1=B0=EC=9D=B4=EC=8A=A4=ED=8B=B1?= =?UTF-8?q?,=20PRO=5F=ED=81=B0=EC=88=98=EB=A7=8C=EB=93=A4=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\354\235\264\354\212\244\355\213\261.java" | 22 +++++++++++++++++++ ...\353\247\214\353\223\244\352\270\260.java" | 2 ++ 2 files changed, 24 insertions(+) create mode 100644 "src/main/java/changhyeon/PRO_\354\241\260\354\235\264\354\212\244\355\213\261.java" create mode 100644 "src/main/java/changhyeon/PRO_\355\201\260\354\210\230\353\247\214\353\223\244\352\270\260.java" diff --git "a/src/main/java/changhyeon/PRO_\354\241\260\354\235\264\354\212\244\355\213\261.java" "b/src/main/java/changhyeon/PRO_\354\241\260\354\235\264\354\212\244\355\213\261.java" new file mode 100644 index 0000000..f2b077c --- /dev/null +++ "b/src/main/java/changhyeon/PRO_\354\241\260\354\235\264\354\212\244\355\213\261.java" @@ -0,0 +1,22 @@ +package changhyeon; + +public class PRO_조이스틱 { + + public int solution(String name) { + int result = 0; + int idx; + int move = name.length() - 1; + + for (int i = 0; i < name.length(); i++) { + result += Math.min(name.charAt(i) - 'A', 'Z' - name.charAt(i) + 1); + + idx = i + 1; + while (idx < name.length() && name.charAt(idx) == 'A') { + idx++; + } + move = Math.min(move, (i * 2) + name.length() - idx); // 순서대로, 반대로 중 적은 횟수 값 + move = Math.min(move, (name.length() - idx) * 2 + i); // 뒷부분 먼저 + } + return result + move; + } +} diff --git "a/src/main/java/changhyeon/PRO_\355\201\260\354\210\230\353\247\214\353\223\244\352\270\260.java" "b/src/main/java/changhyeon/PRO_\355\201\260\354\210\230\353\247\214\353\223\244\352\270\260.java" new file mode 100644 index 0000000..1dc84f8 --- /dev/null +++ "b/src/main/java/changhyeon/PRO_\355\201\260\354\210\230\353\247\214\353\223\244\352\270\260.java" @@ -0,0 +1,2 @@ +package changhyeon;public class PRO_큰수만들기 { +} From 1a835a484bed0f8ced3a8d715f4e24a0ce579c33 Mon Sep 17 00:00:00 2001 From: BeomSeogKim Date: Wed, 28 Feb 2024 10:17:10 +0900 Subject: [PATCH 73/80] =?UTF-8?q?[11=EC=A3=BC=EC=B0=A8]=20=ED=83=90?= =?UTF-8?q?=EC=9A=95=EB=B2=95=20PRO=5F=EA=B5=AC=EB=AA=85=EB=B3=B4=ED=8A=B8?= =?UTF-8?q?=20=EA=B9=80=EB=B2=94=EC=84=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\353\252\205\353\263\264\355\212\270.java" | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 "src/main/java/tommy/PRO_\352\265\254\353\252\205\353\263\264\355\212\270.java" diff --git "a/src/main/java/tommy/PRO_\352\265\254\353\252\205\353\263\264\355\212\270.java" "b/src/main/java/tommy/PRO_\352\265\254\353\252\205\353\263\264\355\212\270.java" new file mode 100644 index 0000000..02febeb --- /dev/null +++ "b/src/main/java/tommy/PRO_\352\265\254\353\252\205\353\263\264\355\212\270.java" @@ -0,0 +1,21 @@ +package tommy; + +import java.util.Arrays; + +public class PRO_구명보트 { + public int solution(int[] people, int limit) { + Arrays.sort(people); + int answer = 0; + int pointer = 0; + + for(int i = people.length - 1; i >= pointer; i--){ + if (people[i] + people[pointer] <= limit){ + answer++; + pointer++; + } else{ + answer++; + } + } + return answer; + } +} From 8e684270da12c6063b7108309933ac00b0aacabb Mon Sep 17 00:00:00 2001 From: changhyeon Date: Wed, 28 Feb 2024 10:22:29 +0900 Subject: [PATCH 74/80] =?UTF-8?q?[11=EC=A3=BC=EC=B0=A8]=20=ED=83=90?= =?UTF-8?q?=EC=9A=95=EB=B2=95=20PRO=5F=EA=B5=AC=EB=AA=85=EB=B3=B4=ED=8A=B8?= =?UTF-8?q?=20=ED=99=A9=EC=B0=BD=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\353\252\205\353\263\264\355\212\270.java" | 40 +++++++++++++++++++ ...\353\247\214\353\223\244\352\270\260.java" | 24 ++++++++++- 2 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 "src/main/java/changhyeon/PRO_\352\265\254\353\252\205\353\263\264\355\212\270.java" diff --git "a/src/main/java/changhyeon/PRO_\352\265\254\353\252\205\353\263\264\355\212\270.java" "b/src/main/java/changhyeon/PRO_\352\265\254\353\252\205\353\263\264\355\212\270.java" new file mode 100644 index 0000000..c2b3023 --- /dev/null +++ "b/src/main/java/changhyeon/PRO_\352\265\254\353\252\205\353\263\264\355\212\270.java" @@ -0,0 +1,40 @@ +package changhyeon; + +import java.util.ArrayDeque; +import java.util.Arrays; +import java.util.Deque; + +public class PRO_구명보트 { + + public int solution(int[] people, int limit) { + int count = 0; + Arrays.sort(people); + Deque deque = new ArrayDeque<>(); + + for (int i = people.length - 1; i >= 0; i--) { + deque.add(people[i]); + } + + while (deque.size() >= 2) { + int first = deque.peekFirst(); + int last = deque.peekLast(); + + if (first + last <= limit) { + deque.pollFirst(); + deque.pollLast(); + count++; + continue; + } + + deque.poll(); + count++; + } + + if (!deque.isEmpty()) { + deque.poll(); + count++; + } + + return count; + } +} diff --git "a/src/main/java/changhyeon/PRO_\355\201\260\354\210\230\353\247\214\353\223\244\352\270\260.java" "b/src/main/java/changhyeon/PRO_\355\201\260\354\210\230\353\247\214\353\223\244\352\270\260.java" index 1dc84f8..36abf7e 100644 --- "a/src/main/java/changhyeon/PRO_\355\201\260\354\210\230\353\247\214\353\223\244\352\270\260.java" +++ "b/src/main/java/changhyeon/PRO_\355\201\260\354\210\230\353\247\214\353\223\244\352\270\260.java" @@ -1,2 +1,24 @@ -package changhyeon;public class PRO_큰수만들기 { +package changhyeon; + +public class PRO_큰수만들기 { + + private static StringBuilder sb = new StringBuilder(); + + public String solution(String number, int k) { + int index = 0; + int max; + + for (int i = 0; i < number.length() - k; i++) { + max = 0; + for (int j = index; j <= k + i; j++) { + if (max < number.charAt(j) - '0') { + max = number.charAt(j) - '0'; + index = j + 1; + } + } + + sb.append(max); + } + return sb.toString(); + } } From 23b8c6aeb543d6c1a613a33b2583a1ef841dcf49 Mon Sep 17 00:00:00 2001 From: BeomSeogKim Date: Thu, 29 Feb 2024 09:17:48 +0900 Subject: [PATCH 75/80] =?UTF-8?q?[11=EC=A3=BC=EC=B0=A8]=20=ED=83=90?= =?UTF-8?q?=EC=9A=95=EB=B2=95=20PRO=5F=ED=81=B0=EC=88=98=EB=A7=8C=EB=93=A4?= =?UTF-8?q?=EA=B8=B0=20=EA=B9=80=EB=B2=94=EC=84=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\353\247\214\353\223\244\352\270\260.java" | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 "src/main/java/tommy/PRO_\355\201\260\354\210\230\353\247\214\353\223\244\352\270\260.java" diff --git "a/src/main/java/tommy/PRO_\355\201\260\354\210\230\353\247\214\353\223\244\352\270\260.java" "b/src/main/java/tommy/PRO_\355\201\260\354\210\230\353\247\214\353\223\244\352\270\260.java" new file mode 100644 index 0000000..176490c --- /dev/null +++ "b/src/main/java/tommy/PRO_\355\201\260\354\210\230\353\247\214\353\223\244\352\270\260.java" @@ -0,0 +1,24 @@ +package tommy; + +import java.util.List; + +public class PRO_큰수만들기 { + public String solution(String number, int k) { + StringBuilder sb = new StringBuilder(); + int index = 0; + int max; + for(int i = 0; i < number.length() - k; i++){ + max = 0; + for(int j = index; j <= k + i; j++){ + if(max < number.charAt(j) - '0'){ + max = number.charAt(j) - '0'; + index = j + 1; + } + } + sb.append(max); + } + + return sb.toString(); + } + +} From 7c4325028382d11e58aeaac12c36bcdd7546f72f Mon Sep 17 00:00:00 2001 From: changhyeon Date: Mon, 4 Mar 2024 10:29:49 +0900 Subject: [PATCH 76/80] =?UTF-8?q?[12=EC=A3=BC=EC=B0=A8]=20DFS/BFS=20PRO=5F?= =?UTF-8?q?=EB=84=A4=ED=8A=B8=EC=9B=8C=ED=81=AC=20=ED=99=A9=EC=B0=BD?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\355\212\270\354\233\214\355\201\254.java" | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 "src/main/java/changhyeon/PRO_\353\204\244\355\212\270\354\233\214\355\201\254.java" diff --git "a/src/main/java/changhyeon/PRO_\353\204\244\355\212\270\354\233\214\355\201\254.java" "b/src/main/java/changhyeon/PRO_\353\204\244\355\212\270\354\233\214\355\201\254.java" new file mode 100644 index 0000000..48000ea --- /dev/null +++ "b/src/main/java/changhyeon/PRO_\353\204\244\355\212\270\354\233\214\355\201\254.java" @@ -0,0 +1,27 @@ +package changhyeon; + +public class PRO_네트워크 { + + public int solution(int n, int[][] computers) { + int count = 0; + boolean[] visited = new boolean[n]; + + for (int i = 0; i < n; i++) { + if (!visited[i]) { + count++; + dfs(i, computers, visited); + } + } + + return count; + } + + private void dfs(int index, int[][] computers, boolean[] visited) { + visited[index] = true; + for (int i = 0; i < computers[index].length; i++) { + if (computers[index][i] == 1 && !visited[i]) { + dfs(i, computers, visited); + } + } + } +} From 88a409db2ff267d4a1fca00168e7af4163e7e40b Mon Sep 17 00:00:00 2001 From: BeomSeogKim Date: Mon, 4 Mar 2024 10:34:50 +0900 Subject: [PATCH 77/80] =?UTF-8?q?[12=EC=A3=BC=EC=B0=A8]=20DFS/BFS=20PRO=5F?= =?UTF-8?q?=EB=84=A4=ED=8A=B8=EC=9B=8C=ED=81=AC=20=EA=B9=80=EB=B2=94?= =?UTF-8?q?=EC=84=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\355\212\270\354\233\214\355\201\254.java" | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 "src/main/java/tommy/PRO_\353\204\244\355\212\270\354\233\214\355\201\254.java" diff --git "a/src/main/java/tommy/PRO_\353\204\244\355\212\270\354\233\214\355\201\254.java" "b/src/main/java/tommy/PRO_\353\204\244\355\212\270\354\233\214\355\201\254.java" new file mode 100644 index 0000000..97f2966 --- /dev/null +++ "b/src/main/java/tommy/PRO_\353\204\244\355\212\270\354\233\214\355\201\254.java" @@ -0,0 +1,27 @@ +package tommy; + +public class PRO_네트워크 { + static boolean[] visited; + + public int solution(int n, int[][] computers) { + visited = new boolean[n]; + int answer = 0; + + for(int i = 0; i < n; i++){ + if(!visited[i]){ + answer++; + recursion(computers, i); + } + } + return answer; + } + + void recursion(int[][] computers, int startIndex){ + visited[startIndex] = true; + for(int i = 0; i < computers.length; i++){ + if(computers[startIndex][i] == 1 && !visited[i]){ + recursion(computers, i); + } + } + } +} From 7fe339c5d9f29f273441eebd862f5c3f607bd29f Mon Sep 17 00:00:00 2001 From: changhyeon Date: Mon, 4 Mar 2024 11:05:33 +0900 Subject: [PATCH 78/80] =?UTF-8?q?[12=EC=A3=BC=EC=B0=A8]=20DFS/BFS=20PRO=5F?= =?UTF-8?q?=EA=B2=8C=EC=9E=84=20=EB=A7=B5=20=EC=B5=9C=EB=8B=A8=EA=B1=B0?= =?UTF-8?q?=EB=A6=AC=20=ED=99=A9=EC=B0=BD=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\353\213\250\352\261\260\353\246\254.java" | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 "src/main/java/changhyeon/PRO_\352\262\214\354\236\204\353\247\265\354\265\234\353\213\250\352\261\260\353\246\254.java" diff --git "a/src/main/java/changhyeon/PRO_\352\262\214\354\236\204\353\247\265\354\265\234\353\213\250\352\261\260\353\246\254.java" "b/src/main/java/changhyeon/PRO_\352\262\214\354\236\204\353\247\265\354\265\234\353\213\250\352\261\260\353\246\254.java" new file mode 100644 index 0000000..bc92ced --- /dev/null +++ "b/src/main/java/changhyeon/PRO_\352\262\214\354\236\204\353\247\265\354\265\234\353\213\250\352\261\260\353\246\254.java" @@ -0,0 +1,47 @@ +package changhyeon; + +import java.util.ArrayDeque; +import java.util.Deque; + +public class PRO_게임맵최단거리 { + + private static int[] mx = {0, 0, -1, 1}; + private static int[] my = {-1, 1, 0, 0}; + private static boolean[][] visited; + private static int WIDTH = 5, HEIGHT = 5; + + public int solution(int[][] maps) { + visited = new boolean[maps.length][maps[0].length]; + WIDTH = maps[0].length; + HEIGHT = maps.length; + + bfs(0, 0, maps); + + if (maps[HEIGHT - 1][WIDTH - 1] == 1) { + return -1; + } + + return maps[HEIGHT - 1][WIDTH - 1]; + } + + private void bfs(int x, int y, int[][] maps) { + Deque deque = new ArrayDeque<>(); + deque.add(new int[] {x, y}); + visited[y][x] = true; + + while (!deque.isEmpty()) { + int[] cur = deque.poll(); + + for (int i = 0; i < 4; i++) { + int dx = mx[i] + cur[0]; + int dy = my[i] + cur[1]; + + if (dx >= 0 && dy >= 0 && dx < WIDTH && dy < HEIGHT && maps[dy][dx] != 0 && !visited[dy][dx]) { + visited[dy][dx] = true; + maps[dy][dx] = maps[cur[1]][cur[0]] + 1; + deque.add(new int[] {dx, dy}); + } + } + } + } +} From ee7ac9e632c64fd6937accedd9f87d64c84c9a9b Mon Sep 17 00:00:00 2001 From: changhyeon Date: Mon, 4 Mar 2024 11:09:02 +0900 Subject: [PATCH 79/80] =?UTF-8?q?[11=EC=A3=BC=EC=B0=A8]=20DFS/BFS=20PRO=5F?= =?UTF-8?q?=ED=83=80=EA=B2=9F=20=EB=84=98=EB=B2=84=20=ED=99=A9=EC=B0=BD?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\352\262\237\353\204\230\353\262\204.java" | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 "src/main/java/changhyeon/PRO_\355\203\200\352\262\237\353\204\230\353\262\204.java" diff --git "a/src/main/java/changhyeon/PRO_\355\203\200\352\262\237\353\204\230\353\262\204.java" "b/src/main/java/changhyeon/PRO_\355\203\200\352\262\237\353\204\230\353\262\204.java" new file mode 100644 index 0000000..c9cc966 --- /dev/null +++ "b/src/main/java/changhyeon/PRO_\355\203\200\352\262\237\353\204\230\353\262\204.java" @@ -0,0 +1,23 @@ +package changhyeon; + +public class PRO_타겟넘버 { + + public int solution(int[] numbers, int target) { + return dfs(numbers, target, 0, 0); + } + + private int dfs(int[] numbers, int target, int depth, int sum) { + int matchCount = 0; + + if (depth == numbers.length) { + if (sum == target) { + return 1; + } + return 0; + } + + matchCount += dfs(numbers, target, depth + 1, sum + numbers[depth]); + matchCount += dfs(numbers, target, depth + 1, sum - numbers[depth]); + return matchCount; + } +} From 4fd387bf8b75355c3007c570b2d7d66dc832c326 Mon Sep 17 00:00:00 2001 From: changhyeon Date: Mon, 4 Mar 2024 11:56:43 +0900 Subject: [PATCH 80/80] =?UTF-8?q?docs:=2011=EC=A3=BC=EC=B0=A8=20=EB=AC=B8?= =?UTF-8?q?=EC=A0=9C=20=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/README.md b/README.md index a3c40e3..455d96a 100644 --- a/README.md +++ b/README.md @@ -230,6 +230,28 @@ algorithm-study [81. [레벨2] 피로도](https://school.programmers.co.kr/learn/courses/30/lessons/87946)
[82. [레벨2] 전력망을 둘로 나누기](https://school.programmers.co.kr/learn/courses/30/lessons/86971)
+### 11주차 + +#### 완전탐색 + +[[레벨2] 모음사전](https://school.programmers.co.kr/learn/courses/30/lessons/84512)
+ +#### 탐욕법 + +[[레벨1] 체육복](https://school.programmers.co.kr/learn/courses/30/lessons/42862)
+[[레벨2] 조이스틱](https://school.programmers.co.kr/learn/courses/30/lessons/42860)
+[[레벨2] 큰 수 만들기](https://school.programmers.co.kr/learn/courses/30/lessons/42883)
+[[레벨2] 구명보트](https://school.programmers.co.kr/learn/courses/30/lessons/42885)
+[[레벨3] 섬 연결하기](https://school.programmers.co.kr/learn/courses/30/lessons/42861)
+ +#### 동적계획법 + +[[레벨3] N으로 표현](https://school.programmers.co.kr/learn/courses/30/lessons/42895) + +#### DFS/BFS + +[[레벨3] 타겟 넘버](https://school.programmers.co.kr/learn/courses/30/lessons/43165) + ## 참고 https://code.plus/course/51