Skip to content

Commit 73840e1

Browse files
authored
Merge pull request #574 from AlgorithmWithGod/JHLEE325
[20250730] BOJ / G4 / 가장 긴 증가하는 부분 수열 4 / 이준희
2 parents 27ad4b4 + 6ab85d2 commit 73840e1

File tree

1 file changed

+55
-0
lines changed

1 file changed

+55
-0
lines changed
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
```java
2+
import java.io.*;
3+
import java.util.*;
4+
5+
public class Main {
6+
7+
public static void main(String[] args) throws Exception {
8+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
9+
StringTokenizer st;
10+
11+
int n = Integer.parseInt(br.readLine());
12+
13+
int[] arr = new int[n];
14+
int[] dp = new int[n];
15+
int[] prev = new int[n];
16+
Arrays.fill(dp, 1);
17+
Arrays.fill(prev, -1);
18+
19+
st = new StringTokenizer(br.readLine());
20+
for (int i = 0; i < n; i++) {
21+
arr[i] = Integer.parseInt(st.nextToken());
22+
}
23+
24+
for (int i = 0; i < n; i++) {
25+
for (int j = 0; j < i; j++) {
26+
if (arr[i] > arr[j] && dp[i] < dp[j] + 1) {
27+
dp[i] = dp[j] + 1;
28+
prev[i] = j;
29+
}
30+
}
31+
}
32+
33+
int max = 0, idx = 0;
34+
for (int i = 0; i < n; i++) {
35+
if (dp[i] > max) {
36+
max = dp[i];
37+
idx = i;
38+
}
39+
}
40+
41+
Stack<Integer> stack = new Stack<>();
42+
while (idx != -1) {
43+
stack.push(arr[idx]);
44+
idx = prev[idx];
45+
}
46+
47+
System.out.println(max);
48+
while (!stack.isEmpty()) {
49+
System.out.print(stack.pop() + " ");
50+
}
51+
52+
}
53+
}
54+
55+
```

0 commit comments

Comments
 (0)