From 88fd44916404ccb89ce033f1599fa99f7e0657ed Mon Sep 17 00:00:00 2001 From: icegosimperson Date: Mon, 28 Oct 2024 09:08:38 +0900 Subject: [PATCH 1/8] =?UTF-8?q?=EC=9D=B4=ED=98=9C=EC=9B=90:=20[CT]=20?= =?UTF-8?q?=EB=B0=A9=ED=99=94=EB=B2=BD=5F=EC=84=A4=EC=B9=98=ED=95=98?= =?UTF-8?q?=EA=B8=B0=5F241028?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\354\271\230\355\225\230\352\270\260.java" | 100 ++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 "CodeTree/2017-2018\353\205\204/HW_\353\260\251\355\231\224\353\262\275_\354\204\244\354\271\230\355\225\230\352\270\260.java" diff --git "a/CodeTree/2017-2018\353\205\204/HW_\353\260\251\355\231\224\353\262\275_\354\204\244\354\271\230\355\225\230\352\270\260.java" "b/CodeTree/2017-2018\353\205\204/HW_\353\260\251\355\231\224\353\262\275_\354\204\244\354\271\230\355\225\230\352\270\260.java" new file mode 100644 index 00000000..bb6dc5ac --- /dev/null +++ "b/CodeTree/2017-2018\353\205\204/HW_\353\260\251\355\231\224\353\262\275_\354\204\244\354\271\230\355\225\230\352\270\260.java" @@ -0,0 +1,100 @@ +import java.util.*; +import java.io.*; + +// 방화벽 3개를 추가로 설치 했을 때 방화벽을 제외하고 불이 퍼지지 않는 영역 크기의 최댓값을 출력 +public class HW_방화벽_설치하기 { + static int n, m; + static int[][] board; + static int[] dx = {-1, 1, 0, 0}; // 상하좌우 + static int[] dy = {0, 0, -1, 1}; + static int max = Integer.MIN_VALUE; + + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + n = Integer.parseInt(st.nextToken()); + m = Integer.parseInt(st.nextToken()); + board = new int[n][m]; + + for (int i = 0; i < n; i++) { + st = new StringTokenizer(br.readLine()); + for (int j = 0; j < m; j++) { + board[i][j] = Integer.parseInt(st.nextToken()); + } + } + dfs(0); + System.out.println(max); + } + + static void dfs(int wall) { // 방화벽 설치 + if (wall == 3) { // 방화벽 3개까지 + bfs(); + return; + } + + for (int i = 0; i < n; i++) { + for (int j = 0; j < m; j++) { + if (board[i][j] == 0) { + board[i][j] = 1; + dfs(wall + 1); + board[i][j] = 0; + } + } + } + } + + static void bfs() { // 불 번지는 영역 확인 + Queue queue = new LinkedList<>(); + int[][] temp = new int[n][m]; + + for (int i = 0; i < n; i++) { // 배열 복사 + for (int j = 0; j < m; j++) { + temp[i][j] = board[i][j]; + if (board[i][j] == 2) { // 불이 있을 경우 + queue.add(new Node(i, j)); // 불 번짐 + } + } + } + while (!queue.isEmpty()) { + Node node = queue.poll(); + int x = node.x; + int y = node.y; + + for (int k = 0; k < 4; k++) { + int nx = x + dx[k]; + int ny = y + dy[k]; + if (isRange(nx, ny) && temp[nx][ny] == 0) { + queue.add(new Node(nx, ny)); + temp[nx][ny] = 2; + } + } + } + check(temp); + } + + static void check(int[][] temp) { // 불이 번지지 않은 영역 확인 + int safe = 0; + for (int i = 0; i < n; i++) { + for (int j = 0; j < m; j++) { + if (temp[i][j] == 0) { + safe++; + } + } + } + max = Math.max(max, safe); + } + + static boolean isRange(int nx, int ny) { + return nx >= 0 && nx < n && ny >= 0 && ny < m; + } + + static class Node { + int x; + int y; + + Node(int x, int y) { + this.x = x; + this.y = y; + } + } +} \ No newline at end of file From 8932a6da890663edda034cad093349a341776a90 Mon Sep 17 00:00:00 2001 From: icegosimperson Date: Tue, 29 Oct 2024 23:10:07 +0900 Subject: [PATCH 2/8] =?UTF-8?q?=EC=9D=B4=ED=98=9C=EC=9B=90:=20[SQL]=20?= =?UTF-8?q?=EC=A1=B0=ED=9A=8C=EC=88=98=EA=B0=80=20=EA=B0=80=EC=9E=A5=20?= =?UTF-8?q?=EB=A7=8E=EC=9D=80=20=EC=A4=91=EA=B3=A0=EA=B1=B0=EB=9E=98=20?= =?UTF-8?q?=EA=B2=8C=EC=8B=9C=ED=8C=90=EC=9D=98=20=EC=B2=A8=EB=B6=80?= =?UTF-8?q?=ED=8C=8C=EC=9D=BC=20=EC=A1=B0=ED=9A=8C=ED=95=98=EA=B8=B0=5F241?= =?UTF-8?q?029?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...74 \354\241\260\355\232\214\355\225\230\352\270\260.SQL" | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 "SQL/08\354\243\274\354\260\250/\354\241\260\355\232\214\354\210\230\352\260\200 \352\260\200\354\236\245 \353\247\216\354\235\200 \354\244\221\352\263\240\352\261\260\353\236\230 \352\262\214\354\213\234\355\214\220\354\235\230 \354\262\250\353\266\200\355\214\214\354\235\274 \354\241\260\355\232\214\355\225\230\352\270\260.SQL" diff --git "a/SQL/08\354\243\274\354\260\250/\354\241\260\355\232\214\354\210\230\352\260\200 \352\260\200\354\236\245 \353\247\216\354\235\200 \354\244\221\352\263\240\352\261\260\353\236\230 \352\262\214\354\213\234\355\214\220\354\235\230 \354\262\250\353\266\200\355\214\214\354\235\274 \354\241\260\355\232\214\355\225\230\352\270\260.SQL" "b/SQL/08\354\243\274\354\260\250/\354\241\260\355\232\214\354\210\230\352\260\200 \352\260\200\354\236\245 \353\247\216\354\235\200 \354\244\221\352\263\240\352\261\260\353\236\230 \352\262\214\354\213\234\355\214\220\354\235\230 \354\262\250\353\266\200\355\214\214\354\235\274 \354\241\260\355\232\214\355\225\230\352\270\260.SQL" new file mode 100644 index 00000000..1aca44e7 --- /dev/null +++ "b/SQL/08\354\243\274\354\260\250/\354\241\260\355\232\214\354\210\230\352\260\200 \352\260\200\354\236\245 \353\247\216\354\235\200 \354\244\221\352\263\240\352\261\260\353\236\230 \352\262\214\354\213\234\355\214\220\354\235\230 \354\262\250\353\266\200\355\214\214\354\235\274 \354\241\260\355\232\214\355\225\230\352\270\260.SQL" @@ -0,0 +1,6 @@ +-- https://school.programmers.co.kr/learn/courses/30/lessons/164671 +SELECT CONCAT('/home/grep/src/', A.BOARD_ID,'/',B.FILE_ID,B.FILE_NAME,B.FILE_EXT) AS FILE_PATH +FROM USED_GOODS_BOARD A JOIN USED_GOODS_FILE B + ON A.BOARD_ID = B.BOARD_ID +WHERE A.VIEWS IN (SELECT MAX(VIEWS) FROM USED_GOODS_BOARD) +ORDER BY FILE_ID DESC; \ No newline at end of file From ca32f61a165d85eb5576fd5a1f1882b0f786ee17 Mon Sep 17 00:00:00 2001 From: icegosimperson Date: Tue, 29 Oct 2024 23:56:45 +0900 Subject: [PATCH 3/8] =?UTF-8?q?=EC=9D=B4=ED=98=9C=EC=9B=90:=20[BOJ]=209342?= =?UTF-8?q?=20=EC=97=BC=EC=83=89=EC=B2=B4=5F241029?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "BOJ/5001-10000\353\262\210/HW_9342.java" | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 "BOJ/5001-10000\353\262\210/HW_9342.java" diff --git "a/BOJ/5001-10000\353\262\210/HW_9342.java" "b/BOJ/5001-10000\353\262\210/HW_9342.java" new file mode 100644 index 00000000..00f7665c --- /dev/null +++ "b/BOJ/5001-10000\353\262\210/HW_9342.java" @@ -0,0 +1,17 @@ +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +public class Main { + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + int T = Integer.parseInt(br.readLine()); + String str = "^[ABCDEF]?A+F+C+[ABCDEF]?$"; + + StringBuilder sb = new StringBuilder(); + while(T-->0){ + sb.append(br.readLine().matches(str) ? "Infected!" : "Good").append('\n'); + } + System.out.println(sb); + } +} \ No newline at end of file From fb14a54fb921089c403f9755d1d817cb9d1c880e Mon Sep 17 00:00:00 2001 From: icegosimperson Date: Wed, 30 Oct 2024 01:28:07 +0900 Subject: [PATCH 4/8] =?UTF-8?q?=EC=9D=B4=ED=98=9C=EC=9B=90:=20[BOJ]=201911?= =?UTF-8?q?=20=ED=9D=99=EA=B8=B8=20=EB=B3=B4=EC=88=98=ED=95=98=EA=B8=B0=5F?= =?UTF-8?q?241029?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "BOJ/1000-5000\353\262\210/HW_1911.java" | 45 ++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 "BOJ/1000-5000\353\262\210/HW_1911.java" diff --git "a/BOJ/1000-5000\353\262\210/HW_1911.java" "b/BOJ/1000-5000\353\262\210/HW_1911.java" new file mode 100644 index 00000000..e45cafa8 --- /dev/null +++ "b/BOJ/1000-5000\353\262\210/HW_1911.java" @@ -0,0 +1,45 @@ +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.Arrays; +import java.util.StringTokenizer; + +// 모든 물웅덩이들을 덮기 위해 필요한 널빤지들의 최소 개수를 출력 +// 시작 위치로부터 순서대로(->정렬) 물웅덩이를 덮어 나가기 -> 그리디 +public class Main { + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + int N = Integer.parseInt(st.nextToken()); + int L = Integer.parseInt(st.nextToken()); + int[][] puddles = new int [N][2]; + for(int i=0; i Integer.compare(a[0], b[0])); // 시작 위치부터 순서대로 덮기 위해 오름차순 정렬 + + int current = 0; // 현재 덮은 위치의 끝 + int cnt = 0; // 필요한 널빤지 개수 + + for(int i=0; i= e){ // 이미 덮였다면 + continue; + } + if(current < s){ + current = s; + } + + int result = (int) Math.ceil((e - current) / (double) L); // (덮어야할 길이 / 널빤지 길이) + cnt += result; // 널빤지 개수++ + current += result * L; // 덮은 위치 갱신 + } + System.out.println(cnt); + } +} \ No newline at end of file From e2d4f010af83e659e841be81f65478d4e9e45c18 Mon Sep 17 00:00:00 2001 From: icegosimperson Date: Wed, 30 Oct 2024 11:35:58 +0900 Subject: [PATCH 5/8] =?UTF-8?q?=EC=9D=B4=ED=98=9C=EC=9B=90:=20[BOJ]=202000?= =?UTF-8?q?7=20=EB=96=A1=20=EB=8F=8C=EB=A6=AC=EA=B8=B0=5F241030?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "BOJ/20001-25000\353\262\210/HW_20007.java" | 94 +++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 "BOJ/20001-25000\353\262\210/HW_20007.java" diff --git "a/BOJ/20001-25000\353\262\210/HW_20007.java" "b/BOJ/20001-25000\353\262\210/HW_20007.java" new file mode 100644 index 00000000..472d185a --- /dev/null +++ "b/BOJ/20001-25000\353\262\210/HW_20007.java" @@ -0,0 +1,94 @@ +import org.w3c.dom.Node; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.*; + +// 시간복잡도 : N<=1,000, M<=100,000 O(NM) 가능 +// 이웃집 모두에 떡을 돌리기 위한 최소 일을 출력 +// 만약 모두 방문할수 없으면 -1을 출력 +public class Main { + static class Node implements Comparable{ + int house; + int cost; + Node(int house, int cost){ + this.house = house; + this.cost = cost; + } + public int compareTo(Node other){ + return this.cost - other.cost; + } + } + + static List[] graph; + static int[] distance; + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + int N = Integer.parseInt(st.nextToken()); // 집 개수 + int M = Integer.parseInt(st.nextToken()); // 도로 개수 + int X = Integer.parseInt(st.nextToken()); // 도로 길이 <= 1000000000 + int Y = Integer.parseInt(st.nextToken()); // 성현이 집 + + // 그래프 초기화 + graph = new ArrayList[N]; + for(int i=0; i(); + } + + for(int i=0; i 그래프? + st = new StringTokenizer(br.readLine()); + int A = Integer.parseInt(st.nextToken()); + int B = Integer.parseInt(st.nextToken()); + int C = Integer.parseInt(st.nextToken()); + graph[A].add(new Node(B, C)); // A -> B 양방향 + graph[B].add(new Node(A, C)); // B -> A + } + distance = new int[N]; + Arrays.fill(distance, Integer.MAX_VALUE); + dijkstra(Y); + + int days = 1; // 최소 일수(첫날 1일) + int totalDistance = 0; + Arrays.sort(distance); + + for (int i = 0; i < N; i++) { // 거리 확인 + if (i != Y) { // 성현이의 집은 제외 + if (distance[i] * 2 > X) { // 왕복 거리 초과 + System.out.println(-1); // 방문x + return; + } + if (totalDistance + distance[i] * 2 > X) { // 하루 이동 거리 초과 + days++; // 하루 추가 + totalDistance = 0; // 새로운 날로 초기화 + } + totalDistance += distance[i] * 2; // 방문한 거리 추가 + } + } + System.out.println(days); // 최소 일수 + } + public static void dijkstra(int start) { + PriorityQueue pq = new PriorityQueue<>(); + pq.add(new Node(start, 0)); + distance[start] = 0; // 시작 위치는 거리 0 + + while (!pq.isEmpty()) { + Node cur = pq.poll(); + int curHouse = cur.house; + int curCost = cur.cost; + + if (curCost > distance[curHouse]) continue; + + for (int i = 0; i < graph[curHouse].size(); i++) { + Node neighbor = graph[curHouse].get(i); + int newCost = distance[curHouse] + neighbor.cost; + + if (newCost < distance[neighbor.house]) { + distance[neighbor.house] = newCost; + pq.add(new Node(neighbor.house, newCost)); + } + } + } + } +} \ No newline at end of file From 11f5d32ceafe972991cba237d5385fe6b545dd8b Mon Sep 17 00:00:00 2001 From: icegosimperson Date: Thu, 31 Oct 2024 09:31:07 +0900 Subject: [PATCH 6/8] =?UTF-8?q?=EC=9D=B4=ED=98=9C=EC=9B=90:=20[SQL]=20?= =?UTF-8?q?=EC=9E=85=EC=96=91=20=EC=8B=9C=EA=B0=81=20=EA=B5=AC=ED=95=98?= =?UTF-8?q?=EA=B8=B0(1)=5F241031?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...52\260\201 \352\265\254\355\225\230\352\270\260(1).SQL" | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 "SQL/08\354\243\274\354\260\250/\354\236\205\354\226\221 \354\213\234\352\260\201 \352\265\254\355\225\230\352\270\260(1).SQL" diff --git "a/SQL/08\354\243\274\354\260\250/\354\236\205\354\226\221 \354\213\234\352\260\201 \352\265\254\355\225\230\352\270\260(1).SQL" "b/SQL/08\354\243\274\354\260\250/\354\236\205\354\226\221 \354\213\234\352\260\201 \352\265\254\355\225\230\352\270\260(1).SQL" new file mode 100644 index 00000000..22e3a781 --- /dev/null +++ "b/SQL/08\354\243\274\354\260\250/\354\236\205\354\226\221 \354\213\234\352\260\201 \352\265\254\355\225\230\352\270\260(1).SQL" @@ -0,0 +1,7 @@ +-- https://school.programmers.co.kr/learn/courses/30/lessons/59412 +-- 09:00부터 19:59까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성 +SELECT HOUR(DATETIME) AS HOUR, COUNT(ANIMAL_ID) AS COUNT +FROM ANIMAL_OUTS +GROUP BY HOUR(DATETIME) +HAVING HOUR >= 9 AND HOUR <= 19 +ORDER BY HOUR \ No newline at end of file From 2b2b1c268af1c2dcb2c68a53ed391048029584aa Mon Sep 17 00:00:00 2001 From: icegosimperson Date: Thu, 31 Oct 2024 10:52:30 +0900 Subject: [PATCH 7/8] =?UTF-8?q?=EC=9D=B4=ED=98=9C=EC=9B=90:=20[BOJ]=202461?= =?UTF-8?q?=20=EB=8C=80=ED=91=9C=20=EC=84=A0=EC=88=98=5F241031?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "BOJ/1000-5000\353\262\210/HW_2461.java" | 51 ++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 "BOJ/1000-5000\353\262\210/HW_2461.java" diff --git "a/BOJ/1000-5000\353\262\210/HW_2461.java" "b/BOJ/1000-5000\353\262\210/HW_2461.java" new file mode 100644 index 00000000..adf74b4c --- /dev/null +++ "b/BOJ/1000-5000\353\262\210/HW_2461.java" @@ -0,0 +1,51 @@ +import org.w3c.dom.Node; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.*; + +public class Main { + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + int N = Integer.parseInt(st.nextToken()); + int M = Integer.parseInt(st.nextToken()); + int[][] students = new int[N][M]; + + for(int i=0; i students[i][indexs[i]]) { // 최솟값 + curMin = students[i][indexs[i]]; + minIdex = i; + } + if(curMax < students[i][indexs[i]]){ // 최댓값 + curMax = students[i][indexs[i]]; + } + } + if((curMax - curMin) < min){ + min = curMax - curMin; + } + if(++indexs[minIdex] >= M) + break; + } + System.out.println(min); + } +} \ No newline at end of file From aac01e5849f2557b436a299e66611578e6fce889 Mon Sep 17 00:00:00 2001 From: icegosimperson Date: Fri, 1 Nov 2024 17:56:15 +0900 Subject: [PATCH 8/8] =?UTF-8?q?=EC=9D=B4=ED=98=9C=EC=9B=90:=20[PG]=2015036?= =?UTF-8?q?9=20=ED=83=9D=EB=B0=B0=20=EB=B0=B0=EB=8B=AC=EA=B3=BC=20?= =?UTF-8?q?=EC=88=98=EA=B1=B0=ED=95=98=EA=B8=B0=5F241030?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Programmers/Level2/HW_150369.java | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 Programmers/Level2/HW_150369.java diff --git a/Programmers/Level2/HW_150369.java b/Programmers/Level2/HW_150369.java new file mode 100644 index 00000000..60e9df9c --- /dev/null +++ b/Programmers/Level2/HW_150369.java @@ -0,0 +1,20 @@ +// 시간복잡도 : N<=100,000 완전 탐색 불가 +// 트럭 하나로 모든 배달과 수거를 마치고 물류창고까지 돌아올 수 있는 최소 이동 거리 +// 모든 배달과 수거 -> 각 집 방문 -> 전체거리 최소화 -> 멀리있는 집부터 방문해서 돌아오기 +class Solution { + public long solution(int cap, int n, int[] deliveries, int[] pickups) { + long answer = 0; + int delivery = 0; + int pickup = 0; + for(int i=n-1; i>=0; i--){ + delivery += deliveries[i]; + pickup += pickups[i]; + while(delivery>0 || pickup>0){ + delivery-= cap; + pickup -= cap; + answer += (i+1) * 2; + } + } + return answer; + } +} \ No newline at end of file