Skip to content

Commit 158fa38

Browse files
committed
52주차
1 parent 488631a commit 158fa38

14 files changed

+650
-0
lines changed
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package org.example._52week;
2+
3+
import java.io.BufferedReader;
4+
import java.io.IOException;
5+
import java.io.InputStreamReader;
6+
import java.util.Arrays;
7+
import java.util.StringTokenizer;
8+
9+
public class CardGame {
10+
11+
private static final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
12+
private static int totalCnt;
13+
private static int selectCnt;
14+
private static int gameCnt;
15+
private static int[] selectedNums;
16+
private static int[] games;
17+
private static int[] parents;
18+
19+
public static void main(String[] args) throws IOException {
20+
input();
21+
22+
23+
}
24+
25+
private static void input() throws IOException {
26+
StringTokenizer st = new StringTokenizer(br.readLine());
27+
28+
totalCnt = Integer.parseInt(st.nextToken());
29+
selectCnt = Integer.parseInt(st.nextToken());
30+
gameCnt = Integer.parseInt(st.nextToken());
31+
32+
selectedNums = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
33+
games = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
34+
35+
Arrays.sort(selectedNums);
36+
}
37+
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package org.example._52week;
2+
3+
import java.io.BufferedReader;
4+
import java.io.IOException;
5+
import java.io.InputStreamReader;
6+
import java.util.Arrays;
7+
8+
public class ContiniousSum {
9+
10+
private static final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
11+
private static int[] nums;
12+
private static int[][] dp;
13+
14+
public static void main(String[] args) throws IOException {
15+
int N = Integer.parseInt(br.readLine());
16+
nums = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
17+
dp = new int[2][N];
18+
19+
// 0: 제거 아무것도 안한거
20+
// 1: 제거 한개 한상태
21+
dp[0][0] = nums[0];
22+
dp[1][0] = 0;
23+
24+
int max = nums[0];
25+
for (int i = 1; i < N; i++) {
26+
dp[0][i] = Math.max(0, dp[0][i - 1]) + nums[i];
27+
dp[1][i] = Math.max(dp[0][i - 1] + 0, dp[1][i - 1] + nums[i]);
28+
29+
max = Math.max(max, dp[0][i]);
30+
max = Math.max(max, dp[1][i]);
31+
}
32+
33+
printDp(dp);
34+
35+
System.out.println(max);
36+
}
37+
38+
private static void printDp(int[][] dp) {
39+
System.out.println("dp");
40+
for (int i = 0; i < dp[0].length; i++) {
41+
System.out.print(dp[0][i] + " ");
42+
}
43+
System.out.println();
44+
for (int i = 0; i < dp[0].length; i++) {
45+
System.out.print(dp[1][i] + " ");
46+
}
47+
48+
System.out.println();
49+
}
50+
}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package org.example._52week;
2+
3+
import java.io.BufferedReader;
4+
import java.io.IOException;
5+
import java.io.InputStreamReader;
6+
import java.util.StringTokenizer;
7+
8+
public class ElectricWire {
9+
10+
private static final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
11+
12+
public static void main(String[] args) throws IOException {
13+
int N = Integer.parseInt(br.readLine());
14+
15+
int[] dp = new int[501];
16+
int[] wires = new int[501];
17+
18+
for (int i = 0; i < N; i++) {
19+
StringTokenizer st = new StringTokenizer(br.readLine());
20+
int a = Integer.parseInt(st.nextToken());
21+
int b = Integer.parseInt(st.nextToken());
22+
23+
wires[a] = b;
24+
}
25+
26+
for (int i = 1; i < 501; i++) {
27+
28+
int max = 0;
29+
for (int j = 1; j < i; j++) {
30+
if (wires[i] > wires[j]) {
31+
max = Math.max(max, dp[j]);
32+
}
33+
}
34+
35+
if (wires[i] != 0) {
36+
dp[i] = max + 1;
37+
}
38+
}
39+
40+
// for (int i = 0; i <= 10; i++) {
41+
// System.out.print(i+" ");
42+
// }
43+
// System.out.println();
44+
//
45+
// for (int i = 0; i <= 10; i++) {
46+
// System.out.print(dp[i]+" ");
47+
// }
48+
// System.out.println();
49+
50+
int max = 0;
51+
for (int i = 1; i < 501; i++) {
52+
max = Math.max(max, dp[i]);
53+
}
54+
55+
System.out.println(N - max);
56+
}
57+
58+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package org.example._52week;
2+
3+
import java.io.BufferedReader;
4+
import java.io.IOException;
5+
import java.io.InputStreamReader;
6+
7+
public class LCS {
8+
9+
private static final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
10+
11+
public static void main(String[] args) throws IOException {
12+
String a = br.readLine();
13+
String b = br.readLine();
14+
15+
int[][] dp = new int[a.length() + 1][b.length() + 1];
16+
17+
int max = 0;
18+
for (int aIdx = 0; aIdx < a.length(); aIdx++) {
19+
for (int bIdx = 0; bIdx < b.length(); bIdx++) {
20+
if (a.charAt(aIdx) == b.charAt(bIdx)) {
21+
dp[aIdx + 1][bIdx + 1] = dp[aIdx][bIdx] + 1;
22+
} else {
23+
dp[aIdx + 1][bIdx + 1] = Math.max(dp[aIdx + 1][bIdx], dp[aIdx][bIdx + 1]);
24+
}
25+
26+
max = Math.max(max, dp[aIdx + 1][bIdx + 1]);
27+
}
28+
}
29+
30+
System.out.println(max);
31+
}
32+
}
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
package org.example._52week;
2+
3+
import java.io.BufferedReader;
4+
import java.io.IOException;
5+
import java.io.InputStreamReader;
6+
import java.security.KeyStore;
7+
import java.util.ArrayList;
8+
import java.util.HashMap;
9+
import java.util.Map;
10+
11+
public class LCS2 {
12+
13+
private static final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
14+
15+
public static void main(String[] args) throws IOException {
16+
String a = br.readLine();
17+
String b = br.readLine();
18+
19+
int[][] dp = new int[a.length() + 1][b.length() + 1];
20+
21+
int max = 0;
22+
for (int aIdx = 0; aIdx < a.length(); aIdx++) {
23+
for (int bIdx = 0; bIdx < b.length(); bIdx++) {
24+
if (a.charAt(aIdx) == b.charAt(bIdx)) {
25+
dp[aIdx + 1][bIdx + 1] = dp[aIdx][bIdx] + 1;
26+
} else {
27+
dp[aIdx + 1][bIdx + 1] = Math.max(dp[aIdx + 1][bIdx], dp[aIdx][bIdx + 1]);
28+
}
29+
30+
if (max < dp[aIdx + 1][bIdx + 1]) {
31+
max = dp[aIdx + 1][bIdx + 1];
32+
}
33+
}
34+
}
35+
36+
System.out.println(max);
37+
if (max == 0) {
38+
return;
39+
}
40+
41+
StringBuilder sb = new StringBuilder();
42+
int row = a.length();
43+
int col = b.length();
44+
while (true) {
45+
if (row <= 0 || col <= 0) {
46+
break;
47+
}
48+
49+
if (dp[row][col] == dp[row - 1][col]) {
50+
row = row - 1;
51+
continue;
52+
}
53+
54+
if (dp[row][col] == dp[row][col - 1]) {
55+
col = col - 1;
56+
continue;
57+
}
58+
59+
sb.append(a.charAt(row - 1));
60+
row = row - 1;
61+
col = col - 1;
62+
}
63+
64+
System.out.println(sb.reverse());
65+
66+
HashMap<Integer, String> map = new HashMap<>();
67+
}
68+
}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package org.example._52week;
2+
3+
import java.io.BufferedReader;
4+
import java.io.IOException;
5+
import java.io.InputStreamReader;
6+
import java.util.Arrays;
7+
8+
public class LongestBitonicNumberArray {
9+
10+
private static final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
11+
private static int[] nums;
12+
private static int[][] dp;
13+
14+
public static void main(String[] args) throws IOException {
15+
int N = Integer.parseInt(br.readLine());
16+
nums = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
17+
dp = new int[2][N];
18+
19+
for (int i = 0; i < N; i++) {
20+
21+
int max = 0;
22+
for (int j = 0; j < i; j++) {
23+
if (nums[j] < nums[i]) {
24+
max = Math.max(max, dp[0][j]);
25+
}
26+
}
27+
28+
dp[0][i] = max + 1;
29+
}
30+
31+
for (int i = 0; i < N; i++) {
32+
33+
int max = 0;
34+
for (int j = 0; j < i; j++) {
35+
if (nums[j] > nums[i]) {
36+
max = Math.max(max, dp[0][j]);
37+
max = Math.max(max, dp[1][j]);
38+
}
39+
}
40+
41+
dp[1][i] = max + 1;
42+
}
43+
44+
int max = 0;
45+
for (int i = 0; i < 2; i++) {
46+
for (int j = 0; j < N; j++) {
47+
max = Math.max(max, dp[i][j]);
48+
}
49+
}
50+
51+
System.out.println(max);
52+
}
53+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package org.example._52week;
2+
3+
import java.io.BufferedReader;
4+
import java.io.IOException;
5+
import java.io.InputStreamReader;
6+
7+
public class LongestCommonPartialSubString {
8+
9+
private static final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
10+
11+
public static void main(String[] args) throws IOException {
12+
String a = br.readLine();
13+
String b = br.readLine();
14+
15+
int[][] dp = new int[a.length() + 1][b.length() + 1];
16+
17+
int max = 0;
18+
for (int aIdx = 0; aIdx < a.length(); aIdx++) {
19+
for (int bIdx = 0; bIdx < b.length(); bIdx++) {
20+
if (a.charAt(aIdx) == b.charAt(bIdx)) {
21+
dp[aIdx + 1][bIdx + 1] = dp[aIdx][bIdx] + 1;
22+
max = Math.max(max, dp[aIdx + 1][bIdx + 1]);
23+
}
24+
}
25+
}
26+
27+
System.out.println(max);
28+
}
29+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package org.example._52week;
2+
3+
import java.io.BufferedReader;
4+
import java.io.IOException;
5+
import java.io.InputStreamReader;
6+
import java.util.ArrayList;
7+
import java.util.Arrays;
8+
9+
public class LongestParitialNumberArray2 {
10+
11+
private static final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
12+
private static int[] dp;
13+
private static int[] nums;
14+
15+
public static void main(String[] args) throws IOException {
16+
int N = Integer.parseInt(br.readLine());
17+
nums = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
18+
dp = new int[N];
19+
20+
dp[0] = nums[0];
21+
for (int i = 1; i < N; i++) {
22+
23+
int max = 0;
24+
for (int j = 0; j < i; j++) {
25+
if (nums[j] < nums[i]) {
26+
max = Math.max(max, dp[j]);
27+
}
28+
}
29+
30+
dp[i] = max + nums[i];
31+
}
32+
33+
int max = 0;
34+
for (int i = 0; i < N; i++) {
35+
max = Math.max(max, dp[i]);
36+
}
37+
38+
System.out.println(max);
39+
}
40+
}

0 commit comments

Comments
 (0)