From 4c8c7defd6e8fbae1c8524d4d5af195a8e551ee1 Mon Sep 17 00:00:00 2001 From: icegosimperson Date: Mon, 4 Nov 2024 11:59:05 +0900 Subject: [PATCH 01/10] =?UTF-8?q?=EC=9D=B4=ED=98=9C=EC=9B=90:=20[PG]=20640?= =?UTF-8?q?62=20=EC=A7=95=EA=B2=80=EB=8B=A4=EB=A6=AC=20=EA=B1=B4=EB=84=88?= =?UTF-8?q?=EA=B8=B0=5F241104?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Programmers/Level3/HW_64062.java | 35 ++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 Programmers/Level3/HW_64062.java diff --git a/Programmers/Level3/HW_64062.java b/Programmers/Level3/HW_64062.java new file mode 100644 index 00000000..91f4a520 --- /dev/null +++ b/Programmers/Level3/HW_64062.java @@ -0,0 +1,35 @@ +// 시간 복잡도 : stones.length<=200_000 -> O(N^2) 불가 +// 완전 탐색 -> 시간 초과 -> 이분 탐색으로 탐색 범위 줄여줌 -> O(N logN) + +// 징검다리를 건널 수 있는 최대 니니즈 친구들의 수 구하기 +// 한명씩 징검다리를 건너는 경우하여 돌을 줄이는 과정 -> 시간초과 +// 이분탐색으로 특정 인원이 건널 수 있는지 여부만 확인 +class Solution { + public int solution(int[] stones, int k) { + int answer = 0; + int start = 0; + int end = Integer.MAX_VALUE; + + while(start <= end){ + int mid = (start + end)/2; // 건널 수 있는 사람의 수 + if(check(mid, k, stones)){ // true (mid명까지 건널 수 있는 경우) + answer = mid; + start = mid+1; // (mid+1)명까지 건널 수 있는지 확인 + } else{ // false + end = mid-1; + } + } + return answer; + } + public boolean check(int mid, int k, int[] stones){ // mid명이 건널 수 있는지 판단 + int cnt = 0; // 연속으로 건널 수 없는 돌의 개수 + for(int i = 0; i < stones.length; i++) { + if(stones[i] < mid) { // 현재 돌에 mid명이 건너려고할 때 + cnt++; + if(cnt>=k) // 연속으로 건널 수 없는 돌이 k개 이상일 경우 + return false; + } else cnt=0; // 연속성 끊김 + } + return true; + } +} From 3c6041dfbc272c5fc50cc48a79204af0fbc20884 Mon Sep 17 00:00:00 2001 From: icegosimperson Date: Mon, 4 Nov 2024 22:27:48 +0900 Subject: [PATCH 02/10] =?UTF-8?q?docs:=20HW=5F64062=20=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4=EB=AA=85=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Programmers/Level3/HW_64062.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Programmers/Level3/HW_64062.java b/Programmers/Level3/HW_64062.java index 91f4a520..af90bd92 100644 --- a/Programmers/Level3/HW_64062.java +++ b/Programmers/Level3/HW_64062.java @@ -4,7 +4,7 @@ // 징검다리를 건널 수 있는 최대 니니즈 친구들의 수 구하기 // 한명씩 징검다리를 건너는 경우하여 돌을 줄이는 과정 -> 시간초과 // 이분탐색으로 특정 인원이 건널 수 있는지 여부만 확인 -class Solution { +class HW_64062 { public int solution(int[] stones, int k) { int answer = 0; int start = 0; From 7f4a24739a8dbceb65569c64cb04f97a6a3f673b Mon Sep 17 00:00:00 2001 From: icegosimperson Date: Mon, 4 Nov 2024 22:29:49 +0900 Subject: [PATCH 03/10] =?UTF-8?q?=EC=9D=B4=ED=98=9C=EC=9B=90:=20[CT]=20?= =?UTF-8?q?=EC=A0=84=ED=88=AC=20=EB=A1=9C=EB=B4=87=5F241104?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...355210円254円_353円241円234円353円264円207円.java" | 94 +++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 "CodeTree/2017-2018353円205円204円/HW_354円240円204円355円210円254円_353円241円234円353円264円207円.java" diff --git "a/CodeTree/2017-2018353円205円204円/HW_354円240円204円355円210円254円_353円241円234円353円264円207円.java" "b/CodeTree/2017-2018353円205円204円/HW_354円240円204円355円210円254円_353円241円234円353円264円207円.java" new file mode 100644 index 00000000..1ed07bfe --- /dev/null +++ "b/CodeTree/2017-2018353円205円204円/HW_354円240円204円355円210円254円_353円241円234円353円264円207円.java" @@ -0,0 +1,94 @@ +import java.io.*; +import java.util.*; + +public class HW_전투_로봇 { + static int n, m; + static int[][] board; + static boolean[][] visited; + static int[] dx = {1, 0, -1, 0}; + static int[] dy = {0, 1, 0, -1}; + static int rbX, rbY; + static int rblevel = 2; // 초기 로봇 레벨 : 2 + static int monsters = 0, time = 0; + public static class Node{ + int x, y, d; + Node(int x, int y, int d){ + this.x = x; + this.y = y; + this.d = d; // 최단거리 기준으로 몬스터를 잡아야하기에 + } + } + public static void main(String[] args) throws IOException{ + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + n = Integer.parseInt(br.readLine()); + board = new int[n][n]; + for(int i=0; i빈칸 처리 + } + } + } + while(true){ + Node target = bfs(); + if(target==null){ + break; + } + // 로봇 이동 및 시간 증가 + rbX = target.x; + rbY = target.y; + time += target.d; + + board[rbX][rbY] = 0; + monsters++; + if(monsters == rblevel){ + rblevel++; + monsters = 0; + } + } + System.out.println(time); + } + public static Node bfs(){ // 잡을 수 있는 몬스터 찾기 + Queue queue = new LinkedList(); + visited = new boolean[n][n]; + queue.add(new Node(rbX, rbY, 0)); // 초기값 + visited[rbX][rbY] = true; // 방문 처리 + List temp = new ArrayList(); // 잡을 수 있는 몬스터를 저장 + + while(!queue.isEmpty()){ + Node cur = queue.poll(); + for(int i=0; i<4; i++){ + int nx = cur.x + dx[i]; + int ny = cur.y + dy[i]; + if(check(nx, ny) && !visited[nx][ny] && board[nx][ny] <= rblevel){ + visited[nx][ny] = true; // 방문 처리 + if(board[nx][ny]>0 && board[nx][ny] { + if(a.d == b.d){ // 가장 가까운 거리의 없앨 수 있는 몬스터가 하나 이상이라면 + if(a.x == b.x){ + return Integer.compare(a.y, b.y); // 가장 위에 존재하는 몬스터 + } + return Integer.compare(a.x, b.x); // 가장 왼쪽에 존재하는 몬스터부터 + } + return Integer.compare(a.d, b.d); // 거리가 가장 가까운 몬스터 + }); + return temp.get(0); // 가장 우선순위가 높은 타겟 없앰 + } + public static boolean check(int x, int y){ + return x>=0 && y>=0 && x < n && y Date: Tue, 5 Nov 2024 12:50:39 +0900 Subject: [PATCH 04/10] =?UTF-8?q?=EC=9D=B4=ED=98=9C=EC=9B=90:=20[BOJ]=2026?= =?UTF-8?q?60=20=ED=9A=8C=EC=9E=A5=20=EB=BD=91=EA=B8=B0=5F241105?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "BOJ/1000-5000353円262円210円/HW_2660.java" | 75 ++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 "BOJ/1000-5000353円262円210円/HW_2660.java" diff --git "a/BOJ/1000-5000353円262円210円/HW_2660.java" "b/BOJ/1000-5000353円262円210円/HW_2660.java" new file mode 100644 index 00000000..8ab39b57 --- /dev/null +++ "b/BOJ/1000-5000353円262円210円/HW_2660.java" @@ -0,0 +1,75 @@ +import java.io.*; +import java.util.*; + +// 회장의 점수와 회장이 될 수 있는 모든 사람을 찾는 프로그램 작성 + +// 점수 : 특정 회원이 다른 모든 회원과 연결되기 위해 필요한 최단 거리 중에서 가장 먼 거리 +// 회장 : 점수가 가장 낮은 사람(가장 가까운 거리에 있는 사람 = 최단거리) 구해야 함 +// 조건 : 몇 사람을 통하면 모두가 서로알 수 있다 = 모든 회원(노드)가 연결되어 있음 -> 플로이드 + +// 시간복잡도 : O(V^3) (50^3 : 가능) +public class HW_2660 { + static final int INF = Integer.MAX_VALUE>> 2; + static int N; + static int[][] graph; + public static void main(String[] args) throws IOException{ + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st; + N = Integer.parseInt(br.readLine()); + graph = new int[N+1][N+1]; + + // 배열 초기화 + for(int i=1; i<=n; i++) { + Arrays.fill(graph[i], INF); + graph[i][i] = 0; // 자기 자신과의 거리 0 + } + + while(true) { + st = new StringTokenizer(br.readLine()); + int a = Integer.parseInt(st.nextToken()); + int b = Integer.parseInt(st.nextToken()); + if(a==-1 && b==-1) break; // 종료 조건 + graph[a][b] = graph[b][a] = 1; // 양방향 그래프 + } + + // 플로이드 와샬 + for(int k=1; k<=n; k++) { + for(int i=1; i<=n; i++) { + for(int j=1; j<=n; j++) { + if(graph[i][j]> graph[i][k] + graph[k][j]) { + graph[i][j] = graph[i][k] + graph[k][j]; + } + } + } + } + + int min = INF; + int[] scores = new int[N+1]; + + // 각 회원의 점수를 계산 + for(int i=1; i<=n; i++) { + int score = 0; + for(int j=1; j<=n; j++) { + if(graph[i][j] != INF) { + score = Math.max(score, graph[i][j]); + } + } + scores[i] = score; + min = Math.min(min, score); // 최소 점수 갱신 + } + + // 회장 찾기(최소 점수) + ArrayList candidates = new ArrayList(); + for(int i=1; i<=n; i++) { + if(scores[i] == min) { + candidates.add(i); + } + } + + System.out.println(min + " " + candidates.size()); + for(int i=0; i Date: Tue, 5 Nov 2024 12:50:54 +0900 Subject: [PATCH 05/10] =?UTF-8?q?=EC=9D=B4=ED=98=9C=EC=9B=90:=20[SQL]=20?= =?UTF-8?q?=EB=B6=84=EA=B8=B0=EB=B3=84=20=EB=B6=84=ED=99=94=EB=90=9C=20?= =?UTF-8?q?=EB=8C=80=EC=9E=A5=EA=B7=A0=EC=9D=98=20=EA=B0=9C=EC=B2=B4=20?= =?UTF-8?q?=EC=88=98=20=EA=B5=AC=ED=95=98=EA=B8=B0=5F241105?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...64 354円210円230円 352円265円254円355円225円230円352円270円260円.sql" | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 "SQL/09354円243円274円354円260円250円/353円266円204円352円270円260円353円263円204円 353円266円204円355円231円224円353円220円234円 353円214円200円354円236円245円352円267円240円354円235円230円 352円260円234円354円262円264円 354円210円230円 352円265円254円355円225円230円352円270円260円.sql" diff --git "a/SQL/09354円243円274円354円260円250円/353円266円204円352円270円260円353円263円204円 353円266円204円355円231円224円353円220円234円 353円214円200円354円236円245円352円267円240円354円235円230円 352円260円234円354円262円264円 354円210円230円 352円265円254円355円225円230円352円270円260円.sql" "b/SQL/09354円243円274円354円260円250円/353円266円204円352円270円260円353円263円204円 353円266円204円355円231円224円353円220円234円 353円214円200円354円236円245円352円267円240円354円235円230円 352円260円234円354円262円264円 354円210円230円 352円265円254円355円225円230円352円270円260円.sql" new file mode 100644 index 00000000..36a4ac7a --- /dev/null +++ "b/SQL/09354円243円274円354円260円250円/353円266円204円352円270円260円353円263円204円 353円266円204円355円231円224円353円220円234円 353円214円200円354円236円245円352円267円240円354円235円230円 352円260円234円354円262円264円 354円210円230円 352円265円254円355円225円230円352円270円260円.sql" @@ -0,0 +1,5 @@ +-- https://school.programmers.co.kr/learn/courses/30/lessons/299308 +SELECT CONCAT(QUARTER(DIFFERENTIATION_DATE), 'Q') AS QUARTER, COUNT(ID) AS ECOLI_COUNT +FROM ECOLI_DATA +GROUP BY QUARTER +ORDER BY QUARTER; \ No newline at end of file From b706e75d2ab6d7936c9e5eac3b8f3a077ca402ea Mon Sep 17 00:00:00 2001 From: icegosimperson Date: Wed, 6 Nov 2024 10:27:00 +0900 Subject: [PATCH 06/10] =?UTF-8?q?=EC=9D=B4=ED=98=9C=EC=9B=90:=20[BOJ]=2020?= =?UTF-8?q?98=20=EC=99=B8=ED=8C=90=EC=9B=90=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-5000353円262円210円/HW_2098.java" | 44 ++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 "BOJ/1000-5000353円262円210円/HW_2098.java" diff --git "a/BOJ/1000-5000353円262円210円/HW_2098.java" "b/BOJ/1000-5000353円262円210円/HW_2098.java" new file mode 100644 index 00000000..38fbef9e --- /dev/null +++ "b/BOJ/1000-5000353円262円210円/HW_2098.java" @@ -0,0 +1,44 @@ +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.StringTokenizer; +// 시간 복잡도 : 2<=n<=16 -> 16! 완전 탐색 불가 -> DP + 비트마스크 -> 16* 2^16 => O(N * 2 ^N) 가능 +// 가장 적은 비용을 들이는 외판원의 순회 여행 경로를 구하는 프로그램 +// 리스트 데이터를 변수 1개에 저장 -> bit(이진수 표현) +public class HW_2098 { + static int N; // 도시의 개수 + static int[][] W; // 도시 간의 이동 비용 + static int[][] d; // 최소 비용 저장 + static final int INF = Integer.MAX_VALUE>> 2; + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st; + N = Integer.parseInt(br.readLine()); + W = new int[16][16]; // 비용 저장 배열 + d = new int[16][1<<16]; // 최소 비용 + for(int i=0; i 다음 도시(i) 최소 비용 계산 + } + } + d[c][v] = min_val; + return d[c][v]; + } +} \ No newline at end of file From 89ce22cce30a6e34b1938dd43aff5b8f3c79805e Mon Sep 17 00:00:00 2001 From: icegosimperson Date: Thu, 7 Nov 2024 22:16:33 +0900 Subject: [PATCH 07/10] =?UTF-8?q?=EC=9D=B4=ED=98=9C=EC=9B=90:=20[SQL]=20?= =?UTF-8?q?=EB=AC=BC=EA=B3=A0=EA=B8=B0=20=EC=A2=85=EB=A5=98=20=EB=B3=84=20?= =?UTF-8?q?=EB=8C=80=EC=96=B4=20=EC=B0=BE=EA=B8=B0=5F241107?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...3214円200円354円226円264円 354円260円276円352円270円260円.SQL" | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 "SQL/09354円243円274円354円260円250円/353円254円274円352円263円240円352円270円260円 354円242円205円353円245円230円 353円263円204円 353円214円200円354円226円264円 354円260円276円352円270円260円.SQL" diff --git "a/SQL/09354円243円274円354円260円250円/353円254円274円352円263円240円352円270円260円 354円242円205円353円245円230円 353円263円204円 353円214円200円354円226円264円 354円260円276円352円270円260円.SQL" "b/SQL/09354円243円274円354円260円250円/353円254円274円352円263円240円352円270円260円 354円242円205円353円245円230円 353円263円204円 353円214円200円354円226円264円 354円260円276円352円270円260円.SQL" new file mode 100644 index 00000000..c00abee0 --- /dev/null +++ "b/SQL/09354円243円274円354円260円250円/353円254円274円352円263円240円352円270円260円 354円242円205円353円245円230円 353円263円204円 353円214円200円354円226円264円 354円260円276円352円270円260円.SQL" @@ -0,0 +1,10 @@ +-- https://school.programmers.co.kr/learn/courses/30/lessons/293261 +SELECT ID, FISH_NAME, LENGTH +FROM FISH_INFO A JOIN FISH_NAME_INFO B + ON A.FISH_TYPE = B.FISH_TYPE +WHERE (A.FISH_TYPE, LENGTH) IN( + SELECT FISH_TYPE, MAX(LENGTH) + FROM FISH_INFO + GROUP BY FISH_TYPE +) +ORDER BY ID; \ No newline at end of file From 1c57be0acad0c5ca00ef78d19e4991c315dffebd Mon Sep 17 00:00:00 2001 From: icegosimperson Date: Fri, 8 Nov 2024 10:30:12 +0900 Subject: [PATCH 08/10] =?UTF-8?q?=EC=9D=B4=ED=98=9C=EC=9B=90:=20[BOJ]=2013?= =?UTF-8?q?164=20=ED=96=89=EB=B3=B5=20=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-15000353円262円210円/HW_13164.java" | 35 +++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 "BOJ/10001-15000353円262円210円/HW_13164.java" diff --git "a/BOJ/10001-15000353円262円210円/HW_13164.java" "b/BOJ/10001-15000353円262円210円/HW_13164.java" new file mode 100644 index 00000000..8ded365c --- /dev/null +++ "b/BOJ/10001-15000353円262円210円/HW_13164.java" @@ -0,0 +1,35 @@ +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.StringTokenizer; + +public class HW_13164 { + 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 K = Integer.parseInt(st.nextToken()); // 조원 수 + int[] arr = new int[N]; + int[] diff = new int[N-1]; + int result = 0; + st = new StringTokenizer(br.readLine()); + for(int i=0; i Date: Fri, 8 Nov 2024 23:34:22 +0900 Subject: [PATCH 09/10] =?UTF-8?q?=EC=9D=B4=ED=98=9C=EC=9B=90:=20[BOJ]=2014?= =?UTF-8?q?620=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-15000353円262円210円/HW_14620.java" | 83 +++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 "BOJ/10001-15000353円262円210円/HW_14620.java" diff --git "a/BOJ/10001-15000353円262円210円/HW_14620.java" "b/BOJ/10001-15000353円262円210円/HW_14620.java" new file mode 100644 index 00000000..865d700c --- /dev/null +++ "b/BOJ/10001-15000353円262円210円/HW_14620.java" @@ -0,0 +1,83 @@ +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.StringTokenizer; + +// 시간 복잡도 : 6<=n<=10 -> O(N^2) -> 완전 탐색 가능 +// 꽃을 심기위한 최소 비용을 출력 +public class HW_14620 { + static int N; + static int[] dx = {1, 0, -1, 0}; + static int[] dy = {0, 1, 0, -1}; + static int[][] garden; + static boolean[][] visited; + static int min = Integer.MAX_VALUE; + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st; + N = Integer.parseInt(br.readLine()); + garden = new int[N][N]; + visited = new boolean[N][N]; + + for(int i=0; i= 0 && ny>= 0 && nx < N && ny < N; + } +} \ No newline at end of file From bd31870adac91cba82534a77ef074f3234cc08c8 Mon Sep 17 00:00:00 2001 From: icegosimperson Date: Sat, 9 Nov 2024 16:23:04 +0900 Subject: [PATCH 10/10] =?UTF-8?q?=EC=9D=B4=ED=98=9C=EC=9B=90:=20[PG]=20118?= =?UTF-8?q?668=20=EC=BD=94=EB=94=A9=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=EA=B3=B5=EB=B6=80=5F241107?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Programmers/Level3/HW_118668.java | 54 +++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 Programmers/Level3/HW_118668.java diff --git a/Programmers/Level3/HW_118668.java b/Programmers/Level3/HW_118668.java new file mode 100644 index 00000000..2b9a91d8 --- /dev/null +++ b/Programmers/Level3/HW_118668.java @@ -0,0 +1,54 @@ +import java.util.*; + +class HW_118668 { + public int solution(int alp, int cop, int[][] problems) { + int tA = alp; + int tC = cop; + + // 목표 알고력과 코딩력을 설정 + for (int i = 0; i < problems.length; i++) { + tA = Math.max(tA, problems[i][0]); // target Alp + tC = Math.max(tC, problems[i][1]); // target Cop + } + + int[][] dp = new int[tA + 1][tC + 1]; // dp[알고력][코딩력] + + // dp배열 초기화 + for (int i = 0; i <= tA; i++) { + for (int j = 0; j <= tC; j++) { + dp[i][j] = Integer.MAX_VALUE; // 초기 상태에서 도달할 수 없는 값들은 큰 값으로 초기화 + } + } + + dp[alp][cop] = 0; // 시작 지점 시간 0으로 설정 + + for (int i = alp; i <= tA; i++) { + for (int j = cop; j <= tC; j++) { + if (i + 1 <= tA) { // 알고력 +1 경우 + dp[i + 1][j] = Math.min(dp[i + 1][j], dp[i][j] + 1); + } + + if (j + 1 <= tC) { // 코딩력 +1 경우 + dp[i][j + 1] = Math.min(dp[i][j + 1], dp[i][j] + 1); + } + + // 문제를 풀어서 능력치 올리기 + for (int[] problem : problems) { + int alp_req = problem[0]; + int cop_req = problem[1]; + int alp_rw = problem[2]; + int cop_rw = problem[3]; + int cost = problem[4]; + + if (i>= alp_req && j>= cop_req) { + int nA = Math.min(tA, i + alp_rw); + int nC = Math.min(tC, j + cop_rw); + dp[nA][nC] = Math.min(dp[nA][nC], dp[i][j] + cost); + } + } + } + } + + return dp[tA][tC]; + } +}

AltStyle によって変換されたページ (->オリジナル) /