Skip to content

Commit e6f4463

Browse files
authored
[20250728] BOJ / G4 / 가장 긴 증가하는 부분 수열 4 / 이종환
1 parent ca7acc3 commit e6f4463

File tree

1 file changed

+76
-0
lines changed

1 file changed

+76
-0
lines changed
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
```java
2+
import java.io.BufferedReader;
3+
import java.io.IOException;
4+
import java.io.InputStreamReader;
5+
import java.util.Arrays;
6+
import java.util.StringTokenizer;
7+
8+
public class Main {
9+
10+
static int size, maxLen;
11+
static int[] arr;
12+
static int[] dp, ans;
13+
14+
15+
public static void main(String[] args) throws IOException {
16+
init();
17+
process();
18+
print();
19+
}
20+
21+
private static void init() throws IOException {
22+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
23+
size = Integer.parseInt(br.readLine());
24+
arr = new int[size];
25+
dp = new int[size];
26+
ans = new int[size];
27+
maxLen = 1;
28+
StringTokenizer st = new StringTokenizer(br.readLine());
29+
for (int i = 0; i < size; i++) {
30+
arr[i] = Integer.parseInt(st.nextToken());
31+
}
32+
}
33+
34+
private static void process() {
35+
for (int i = 0; i < size; i++) {
36+
dp[i] = 1;
37+
for (int j = 0; j < i; j++) {
38+
if (arr[j] < arr[i]) {
39+
dp[i] = Math.max(dp[i], dp[j] + 1);
40+
}
41+
}
42+
maxLen = Math.max(maxLen, dp[i]);
43+
}
44+
45+
int lastIndex = -1;
46+
for (int i = size - 1; i >= 0; i--) {
47+
if (dp[i] == maxLen) {
48+
lastIndex = i;
49+
break;
50+
}
51+
}
52+
53+
// 2. 역추적하면서 수열 구성
54+
int ansIndex = maxLen - 1;
55+
int currentLen = maxLen;
56+
57+
for (int i = lastIndex; i >= 0; i--) {
58+
if (dp[i] == currentLen) {
59+
ans[ansIndex--] = arr[i];
60+
currentLen--;
61+
}
62+
}
63+
}
64+
65+
private static void print() {
66+
System.out.println(maxLen);
67+
for (int i = 0; i < maxLen; i++) {
68+
System.out.print(ans[i]);
69+
if (i < maxLen - 1) System.out.print(" ");
70+
}
71+
System.out.println();
72+
}
73+
}
74+
75+
76+
```

0 commit comments

Comments
 (0)