Skip to content

Commit 58fa9a6

Browse files
committed
issue sowon-dev#44 11054 가장 긴 바이토닉 부분 수열
1 parent 90f24f2 commit 58fa9a6

File tree

1 file changed

+80
-0
lines changed

1 file changed

+80
-0
lines changed

src/backjoon/_11054.java

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
package backjoon;
2+
// https://www.acmicpc.net/problem/11054
3+
4+
import java.io.BufferedReader;
5+
import java.io.IOException;
6+
import java.io.InputStreamReader;
7+
import java.util.StringTokenizer;
8+
9+
public class _11054 {
10+
static int N;
11+
static int[] seq;
12+
static int[] r_dp;
13+
static int[] l_dp;
14+
public static void main(String[] args) throws IOException {
15+
16+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
17+
N = Integer.parseInt(br.readLine());
18+
19+
StringTokenizer st = new StringTokenizer(br.readLine()," ");
20+
21+
r_dp = new int[N]; // LIS
22+
l_dp = new int[N]; // LDS
23+
seq = new int[N];
24+
25+
for (int i = 0; i < N; i++) {
26+
seq[i] = Integer.parseInt(st.nextToken());
27+
}
28+
29+
LIS();
30+
LDS();
31+
32+
int max = 0;
33+
for(int i = 0; i < N; i++) {
34+
if(max < r_dp[i] + l_dp[i]) {
35+
max = r_dp[i] + l_dp[i];
36+
}
37+
}
38+
39+
System.out.println(max - 1);
40+
}
41+
42+
43+
44+
static void LIS() {
45+
46+
for(int i = 0; i < N; i++) {
47+
r_dp[i] = 1;
48+
49+
// 0 ~ i 이전 원소들 탐색
50+
for(int j = 0; j < i; j++) {
51+
52+
// j번째 원소가 i번째 원소보다 작으면서 i번째 dp가 j번째 dp+1 값보다 작은경우
53+
if(seq[j] < seq[i] && r_dp[i] < r_dp[j] + 1) {
54+
r_dp[i] = r_dp[j] + 1; // j번째 원소의 +1 값이 i번째 dp가 된다.
55+
}
56+
}
57+
}
58+
}
59+
60+
61+
62+
static void LDS() {
63+
64+
// 뒤에서부터 시작
65+
for (int i = N - 1; i >= 0; i--) {
66+
l_dp[i] = 1;
67+
68+
// 맨 뒤에서 i 이전 원소들을 탐색
69+
for (int j = N - 1; j > i; j--) {
70+
71+
// i번째 원소가 j번째 원소보다 크면서 i번째 dp가 j번째 dp+1 값보다 작은경우
72+
if (seq[j] < seq[i] && l_dp[i] < l_dp[j] + 1) {
73+
l_dp[i] = l_dp[j] + 1; // j번쨰 원소의 +1이 i번쨰 dp값이 됨
74+
}
75+
}
76+
}
77+
78+
79+
}
80+
}

0 commit comments

Comments
 (0)