From 5a0c777a42c51173338682250bfe40c0f9c46710 Mon Sep 17 00:00:00 2001 From: yeahdy Date: Sun, 3 Nov 2024 18:47:38 +0900 Subject: [PATCH 1/9] =?UTF-8?q?[PG]=20214289=20=EC=97=90=EC=96=B4=EC=BB=A8?= =?UTF-8?q?=5F241101?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "BOJ/20001-25000\353\262\210/YJ_20007.java" | 1 - Programmers/Level3/YJ_214289.java | 70 +++++++++++++++++++++ 2 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 Programmers/Level3/YJ_214289.java diff --git "a/BOJ/20001-25000\353\262\210/YJ_20007.java" "b/BOJ/20001-25000\353\262\210/YJ_20007.java" index d3f634b0..bd26f87e 100644 --- "a/BOJ/20001-25000\353\262\210/YJ_20007.java" +++ "b/BOJ/20001-25000\353\262\210/YJ_20007.java" @@ -51,7 +51,6 @@ public static void main(String[] args) throws IOException { } static void shareMochi (int index){ - int days = 0; PriorityQueue road = new PriorityQueue<>(); table[index] = 0; diff --git a/Programmers/Level3/YJ_214289.java b/Programmers/Level3/YJ_214289.java new file mode 100644 index 00000000..82003d89 --- /dev/null +++ b/Programmers/Level3/YJ_214289.java @@ -0,0 +1,70 @@ +import java.util.Arrays; + +public class YJ_214289 { + static int min; + static int max; + static public int solution(int temperature, int t1, int t2, int a, int b, int[] onboard) { + final int MAX = 1_000_001; + min = t1 + 10; + max = t2 + 10; + temperature += 10; + + //특정 시간에 특정온도일 때 필요한 최소 전력 찾기 + int length = onboard.length; + int[][] dp = new int[length][51]; + for(int i=0; i 0분일때 실외온도와 같고, 에어컨도 안킨상태니까 전력소비가 없음 + dp[0][temperature] = 0; + + //i i-1 / j+1 j j-1 조합에 따라서 dp 점화식 세우기 + //i 는 시간 / j 는 온도 + for(int i=0; i b 에너지 소비 + dp[i+1][j] = Math.min(dp[i+1][j], dp[i][j]+b); + //에어컨 ON: 온도 내림 > a 에너지 소비 + if(j > 0){ + dp[i+1][j-1] = Math.min(dp[i+1][j-1], dp[i][j]+a); + } + //에어컨 ON: 온도 올림 > a 에너지 소비 + if(j < 50){ + dp[i+1][j+1] = Math.min(dp[i+1][j+1], dp[i][j]+a); + } + + //에어컨 OFF: 온도 유지 > 0 에너지 소비 + if(temperature == j){ + dp[i+1][j] = Math.min(dp[i+1][j], dp[i][j]); + } + //에어컨 OFF: 실외온도 보다 현재 온도가 높을 때 온도 내림 > 0 에너지 소비 + else if(temperature < j){ + dp[i+1][j-1] = Math.min(dp[i+1][j-1], dp[i][j]); + } + //에어컨 OFF: 실외온도 보다 현재 온도가 낮을 때 온도 올림 > 0 에너지 소비 + else if(temperature > j){ + dp[i+1][j+1] = Math.min(dp[i+1][j+1], dp[i][j]); + } + } + } + + int answer = MAX; + for(int i=0; i < 51; i++){ + if(cantOnboard(onboard[length-1],i)){ //마지막에 손님이 있을 때 적정온도가 아니라면 통과X + continue; + } + answer = Math.min(answer,dp[length-1][i]); + } + + return answer; + } + + //손님이 있을 때는 적정온도가 t1~t2 사이여야함 + static boolean cantOnboard (int customer, int temperature){ + return customer == 1 && (temperature < min || temperature > max); + } +} From 115547eb94674306bd9339de3753188029b6f909 Mon Sep 17 00:00:00 2001 From: yeahdy Date: Tue, 5 Nov 2024 10:17:19 +0900 Subject: [PATCH 2/9] =?UTF-8?q?[PG]=2064062=20=EC=A7=95=EA=B2=80=EB=8B=A4?= =?UTF-8?q?=EB=A6=AC=20=EA=B1=B4=EB=84=88=EA=B8=B0=5F241104?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Programmers/Level3/YJ_64062.java | 44 ++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 Programmers/Level3/YJ_64062.java diff --git a/Programmers/Level3/YJ_64062.java b/Programmers/Level3/YJ_64062.java new file mode 100644 index 00000000..2bc26dad --- /dev/null +++ b/Programmers/Level3/YJ_64062.java @@ -0,0 +1,44 @@ +public class YJ_64062 { + public static void main(String[] args) { + int[] stones = {2, 4, 5, 3, 2, 1, 4, 2, 5, 1}; + int k = 3; + System.out.println(new YJ_64062().solution(stones,k)); + } + + public int solution(int[] stones, int k) { + int friends = 0; + + int left = 1; + int right = 200_000_000; //★친구들의 수를 최대값으로 지정 + while(left < right){ + int mid = (left + right)/2; + + //더 많은 친구들이 다리를 건널 수 있는지 + if(canGo(mid,stones,k)){ + left = mid+1; + friends = Math.max(friends, mid); + }else{ + //친구들이 다리를 건널 수 없다면 숫자를 줄이기 + right = mid; + } + } + + return friends; + } + + boolean canGo(int friends, int[] stones, int k){ + int count = 0; + for(int stone : stones){ + //한명씩 비교할 필요XXXXX ★하나의 돌다리에 친구 수만큼 올라갈 수 있는지만 판단★ + if(stone - friends < 0){ + count++; + if(count == k){ + return false; + } + continue; + } + count = 0; + } + return true; + } +} From 105f21c210e51a20c4085dc3e56bffb657c45e23 Mon Sep 17 00:00:00 2001 From: yeahdy Date: Tue, 5 Nov 2024 19:47:36 +0900 Subject: [PATCH 3/9] =?UTF-8?q?[CT]=20=EC=A0=84=ED=88=AC=20=EB=A1=9C?= =?UTF-8?q?=EB=B4=87=5F241104?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...355\210\254_\353\241\234\353\264\207.java" | 168 ++++++++++++++++++ 1 file changed, 168 insertions(+) create mode 100644 "CodeTree/2017-2018\353\205\204/YJ_\354\240\204\355\210\254_\353\241\234\353\264\207.java" diff --git "a/CodeTree/2017-2018\353\205\204/YJ_\354\240\204\355\210\254_\353\241\234\353\264\207.java" "b/CodeTree/2017-2018\353\205\204/YJ_\354\240\204\355\210\254_\353\241\234\353\264\207.java" new file mode 100644 index 00000000..16c27b39 --- /dev/null +++ "b/CodeTree/2017-2018\353\205\204/YJ_\354\240\204\355\210\254_\353\241\234\353\264\207.java" @@ -0,0 +1,168 @@ +import java.io.*; +import java.util.*; + +public class YJ_전투_로봇 { + static class Monster implements Comparable{ + int x; + int y; + int level; + + Monster(int x, int y, int level){ + this.x = x; + this.y = y; + this.level = level; + } + + @Override + public int compareTo(Monster o){ + return this.level - o.level; + } + + boolean requestUpdate(Monster prev){ + if(Objects.isNull(prev)){ + return true; + } + //죽일 수 있는 몬스터 중 현재 지점에서 갈 수 없다면 distance 는 0 + if(distance[this.x][this.y] == 0 || distance[prev.x][prev.y] == 0){ + return false; + } + //가장 가까운 몬스터: 거리 > 행 > 열 + if(distance[this.x][this.y] != distance[prev.x][prev.y]){ + return distance[this.x][this.y] < distance[prev.x][prev.y]; + } + if(this.x != prev.x){ + return this.x < prev.x; + } + return this.y < prev.y; + } + } + + static class Pos { + int x; + int y; + Pos(int x, int y){ + this.x = x; + this.y = y; + } + } + + static final int ROBOT = 9; + + static int n = 0; + static int[][] game; + static boolean[][] visited; + static int[][] distance; + static List monsterList = new ArrayList<>(); + static Deque deque = new ArrayDeque<>(); + static int time = 0; + + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + n = Integer.parseInt(br.readLine()); + + game = new int[n][n]; + for(int i=0; i 0; + } + + private static boolean stop(int x, int y, int level){ + return x < 0 || y < 0 || x >= n || y >= n || visited[x][y] || game[x][y] > level; + } + + static Monster findMonster(int level){ + Monster killMonster = null; + for (Monster monster : monsterList) { + if (monster.level >= level) { + break; + } + if (monster.requestUpdate(killMonster)) { + killMonster = monster; + } + } + return killMonster; + } +} From e7a7275f2d56cd6f142d34eb4533242a8bd35ba2 Mon Sep 17 00:00:00 2001 From: yeahdy Date: Wed, 6 Nov 2024 12:01:15 +0900 Subject: [PATCH 4/9] =?UTF-8?q?[BOJ]=20=ED=9A=8C=EC=9E=A5=20=EB=BD=91?= =?UTF-8?q?=EA=B8=B0=5F241105?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "BOJ/1000-5000\353\262\210/YJ_2660.java" | 90 ++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 "BOJ/1000-5000\353\262\210/YJ_2660.java" diff --git "a/BOJ/1000-5000\353\262\210/YJ_2660.java" "b/BOJ/1000-5000\353\262\210/YJ_2660.java" new file mode 100644 index 00000000..951c5458 --- /dev/null +++ "b/BOJ/1000-5000\353\262\210/YJ_2660.java" @@ -0,0 +1,90 @@ +import java.util.*; +import java.io.*; + +public class YJ_2660 { + static class Node { + int index; + int distance; + Node (int index, int distance) { + this.index = index; + this.distance = distance; + } + } + + static List> graph = new ArrayList<>(); + static int MAX = 51; //★무작정 MAX_VALUE 넣지않기 + static int n; + + public static void main(String[] args) throws IOException{ + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + n = Integer.parseInt(br.readLine()); + + //다익스트라 초기화 + for(int i=0; i()); + } + + while(true){ + StringTokenizer st = new StringTokenizer(br.readLine()); + int to = Integer.parseInt(st.nextToken()); + int from = Integer.parseInt(st.nextToken()); + if(to == -1 && from == -1){ + break; + } + graph.get(to).add(from); + graph.get(from).add(to); + } + + getCandidates(); + } + + static void getCandidates(){ + int min = MAX; + List candidates = new ArrayList<>(); + + //한 사람에 대한 모든 간선의 연결수 구하기 + for(int i=1; i(); + candidates.add(i); + min = connection; + }else if(connection == min) { + candidates.add(i); + } + } + + System.out.printf("%d %d%n",min,candidates.size()); + candidates.forEach(candidate -> System.out.printf("%d ",candidate)); + } + + static int findConnection (int index){ + PriorityQueue queue = new PriorityQueue<>((n1,n2) -> n2.distance - n1.distance); + queue.offer(new Node(index,0)); + + int[] table = new int[n+1]; + Arrays.fill(table,MAX); + table[index] = 0; + + while(!queue.isEmpty()){ + Node person = queue.poll(); + + for(int friend : graph.get(person.index)){ + if(table[friend] > table[person.index]+1){ //★다음 간선까지의 거리 1 + table[friend] = table[person.index]+1; + //★거리를 누적해서 다음 순회에서 친구의 친구 > 친구의 친구의 친구 > ... 연결을 만듬 + queue.offer(new Node(friend,table[friend])); //★Node(연결된 친구,거리) + } + } + } + + int max = 0; + for(int i=1; i Date: Thu, 7 Nov 2024 14:16:12 +0900 Subject: [PATCH 5/9] =?UTF-8?q?[PG]=20118668=20=EC=BD=94=EB=94=A9=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=EC=97=B0=EC=8A=B5=5F241107?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Programmers/Level3/YJ_118668.java | 91 +++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 Programmers/Level3/YJ_118668.java diff --git a/Programmers/Level3/YJ_118668.java b/Programmers/Level3/YJ_118668.java new file mode 100644 index 00000000..4bf6570f --- /dev/null +++ b/Programmers/Level3/YJ_118668.java @@ -0,0 +1,91 @@ +import java.util.*; + +public class YJ_118668 { + public static void main(String[] args) { + int alp = 10; + int cop = 10; + int[][] problems = {{10,15,2,1,2},{20,20,3,3,4}}; + System.out.println(solution(alp,cop,problems)); + } + + static class Problem { + int alpReq; + int copReq; + int alpRwd; + int copRwd; + int cost; + + public Problem(int alpReq, int copReq, int alpRwd, int copRwd, int cost) { + this.alpReq = alpReq; + this.copReq = copReq; + this.alpRwd = alpRwd; + this.copRwd = copRwd; + this.cost = cost; + } + } + + static List list = new ArrayList<>(); + static final int MAX_TIME = 300; + static int[][] dp; + + static public int solution(int alp, int cop, int[][] problems) { + int maxAlp = 0; + int maxCop = 0; + for(int[] problem : problems){ + list.add(new Problem(problem[0], problem[1], problem[2], problem[3], problem[4])); + maxAlp = Math.max(maxAlp,problem[0]); + maxCop = Math.max(maxCop,problem[1]); + } + //모든 문제 풀 수 있는 알고력,코딩력 충족 + if(alp >= maxAlp && cop >= maxCop){ + return 0; + } + + dp = new int[maxAlp+2][maxCop+2]; + for(int[] d : dp){ + Arrays.fill(d,MAX_TIME); + } + //현재 알고력과 코딩력이 목표치 보다 높을 경우 보정하기 + if(alp > maxAlp){ + alp = maxAlp; + } + if(cop > maxCop){ + cop = maxCop; + } + dp[alp][cop] = 0; + + calculateDp(alp, cop, maxAlp, maxCop); + return dp[maxAlp][maxCop]; + } + + static void calculateDp(int alp, int cop, int maxAlp, int maxCop){ + for(int i=alp; i= maxAlp && solvedCop >= maxCop){ + dp[maxAlp][maxCop] = Math.min(dp[maxAlp][maxCop], dp[i][j]+problem.cost); + } + else if(solvedAlp >= maxAlp){ + dp[maxAlp][solvedCop] = Math.min(dp[maxAlp][solvedCop], dp[i][j]+problem.cost); + }else if(solvedCop >= maxCop){ + dp[solvedAlp][maxCop] = Math.min(dp[solvedAlp][maxCop], dp[i][j]+problem.cost); + } + else { //solvedAlp < maxAlp && solvedCop < maxCop + dp[solvedAlp][solvedCop] = Math.min(dp[solvedAlp][solvedCop], dp[i][j]+problem.cost); + } + } + + }//j + }//i + } + +} From 8505e920c7106f688dfcb2965497c7d9d8446b30 Mon Sep 17 00:00:00 2001 From: yeahdy Date: Thu, 7 Nov 2024 20:14:30 +0900 Subject: [PATCH 6/9] =?UTF-8?q?[SQL]=20=EC=9A=B0=EC=9C=A0=EC=99=80=20?= =?UTF-8?q?=EC=9A=94=EA=B1=B0=ED=8A=B8=EA=B0=80=20=EB=8B=B4=EA=B8=B4=20?= =?UTF-8?q?=EC=9E=A5=EB=B0=94=EA=B5=AC=EB=8B=88=5F241107?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...5\353\260\224\352\265\254\353\213\210.sql" | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 "SQL/09\354\243\274\354\260\250/YJ_\354\232\260\354\234\240\354\231\200 \354\232\224\352\262\250\355\212\270\352\260\200 \353\213\264\352\270\264 \354\236\245\353\260\224\352\265\254\353\213\210.sql" diff --git "a/SQL/09\354\243\274\354\260\250/YJ_\354\232\260\354\234\240\354\231\200 \354\232\224\352\262\250\355\212\270\352\260\200 \353\213\264\352\270\264 \354\236\245\353\260\224\352\265\254\353\213\210.sql" "b/SQL/09\354\243\274\354\260\250/YJ_\354\232\260\354\234\240\354\231\200 \354\232\224\352\262\250\355\212\270\352\260\200 \353\213\264\352\270\264 \354\236\245\353\260\224\352\265\254\353\213\210.sql" new file mode 100644 index 00000000..67ec8ca8 --- /dev/null +++ "b/SQL/09\354\243\274\354\260\250/YJ_\354\232\260\354\234\240\354\231\200 \354\232\224\352\262\250\355\212\270\352\260\200 \353\213\264\352\270\264 \354\236\245\353\260\224\352\265\254\353\213\210.sql" @@ -0,0 +1,25 @@ +-- 우유와 요거트를 동시에 구입한 장바구니의 아이디를 조회 +-- 장바구니의 아이디 순 +SELECT cp.CART_ID +FROM CART_PRODUCTS cp +INNER JOIN CART_PRODUCTS sub +ON cp.CART_ID = sub.CART_ID +WHERE cp.NAME = 'Milk' AND sub.NAME = 'Yogurt' +GROUP BY cp.CART_ID, sub.CART_ID +ORDER BY cp.CART_ID; + +-- 스타트업 코테 문제와 유사 +SELECT + name_x, name_y, + COUNT(*) AS '장바구니 수' +FROM ( + SELECT + cp.NAME name_x, + sub.NAME name_y + FROM CART_PRODUCTS cp + INNER JOIN CART_PRODUCTS sub + ON cp.CART_ID = sub.CART_ID + ) cart_combi +WHERE name_x != name_y +GROUP BY name_x, name_y +ORDER BY name_x, name_y \ No newline at end of file From ae1b213d0be7728b6062730aee59598f301e9a11 Mon Sep 17 00:00:00 2001 From: yeahdy Date: Fri, 8 Nov 2024 14:53:54 +0900 Subject: [PATCH 7/9] =?UTF-8?q?[BOJ]=202098=20=EC=99=B8=ED=8C=90=EC=9B=90?= =?UTF-8?q?=20=EC=88=9C=ED=9A=8C=5F241106?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "BOJ/1000-5000\353\262\210/YJ_2098.java" | 55 ++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 "BOJ/1000-5000\353\262\210/YJ_2098.java" diff --git "a/BOJ/1000-5000\353\262\210/YJ_2098.java" "b/BOJ/1000-5000\353\262\210/YJ_2098.java" new file mode 100644 index 00000000..817eeba1 --- /dev/null +++ "b/BOJ/1000-5000\353\262\210/YJ_2098.java" @@ -0,0 +1,55 @@ +import java.io.*; +import java.util.*; + +public class YJ_2098 { + static int N; + static int[][] route; + static int[][] dp; + static final int INF = 16_000_001; + + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + N = Integer.parseInt(br.readLine()); + route = new int[N][N]; + dp = new int[1< 0){ + return route[now][0]; + } + return INF; + } + + if(dp[visited][now] > 0){ //값이 0 이상인 경우 메모리제이션 완료 + return dp[visited][now]; + } + dp[visited][now] = INF; //해당 경로는 방문 전으로 최소값을 찾기위해 최대값으로 초기화 + + for(int next=0; next < N; next++){ + if(stop(visited, now, next)){ + continue; + } + dp[visited][now] = Math.min( + dp[visited][now], travelling(visited |(1< 0; + } +} \ No newline at end of file From 49cc767a93ca0e947075f2ad06147ae4f805fdfe Mon Sep 17 00:00:00 2001 From: yeahdy Date: Fri, 8 Nov 2024 16:45:07 +0900 Subject: [PATCH 8/9] =?UTF-8?q?[BOJ]=2014620=20=EA=BD=83=EA=B8=B8=5F241108?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "BOJ/10001-15000\353\262\210/YJ_14620.java" | 88 +++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 "BOJ/10001-15000\353\262\210/YJ_14620.java" diff --git "a/BOJ/10001-15000\353\262\210/YJ_14620.java" "b/BOJ/10001-15000\353\262\210/YJ_14620.java" new file mode 100644 index 00000000..1f0e6532 --- /dev/null +++ "b/BOJ/10001-15000\353\262\210/YJ_14620.java" @@ -0,0 +1,88 @@ +import java.io.*; +import java.util.*; + +public class YJ_14620 { + static int N; + static int[][] garden; + static boolean[][] visited; + static int result = 3001; + + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + N = Integer.parseInt(br.readLine()); + garden = new int[N][N]; + visited = new boolean[N][N]; + + for(int i=0; i= N || y >= N || visited[x][y]){ + return true; + } + } + return false; + } + + //5평에 꽃 심기 + static int plant(int i , int j){ + int price = garden[i][j]; + + for(int d=0; d<4; d++) { + int x = i + nx[d]; + int y = j + ny[d]; + price += garden[x][y]; + visited[x][y] = true; + //System.out.printf("garden[%d][%d] = %d %n",x,y,garden[x][y]); + } + + return price; + } + + //꽃 하나 없애기 + static void remove(int i, int j){ + for(int d=0; d<4; d++) { + int x = i + nx[d]; + int y = j + ny[d]; + visited[x][y] = false; + } + } + +} From 1f257c38010aa210596ec19b8d08313530483d5e Mon Sep 17 00:00:00 2001 From: yeahdy Date: Sat, 9 Nov 2024 02:33:47 +0900 Subject: [PATCH 9/9] =?UTF-8?q?[BOJ]=2013164=20=ED=96=89=EB=B3=B5=20?= =?UTF-8?q?=EC=9C=A0=EC=B9=98=EC=9B=90=5F241108?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "BOJ/10001-15000\353\262\210/YJ_13164.java" | 30 +++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 "BOJ/10001-15000\353\262\210/YJ_13164.java" diff --git "a/BOJ/10001-15000\353\262\210/YJ_13164.java" "b/BOJ/10001-15000\353\262\210/YJ_13164.java" new file mode 100644 index 00000000..0d3a2b7e --- /dev/null +++ "b/BOJ/10001-15000\353\262\210/YJ_13164.java" @@ -0,0 +1,30 @@ +import java.io.*; +import java.util.*; + +public class YJ_13164 { + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + String[] data = br.readLine().split("\\s"); + int N = Integer.parseInt(data[0]); + int K = Integer.parseInt(data[1]); + int[] children = new int[N]; + StringTokenizer st = new StringTokenizer(br.readLine()); + + for(int i=0; i