백준공부/java
[백준] 11054번 가장 긴 바이토닉 부분 수열 (gold 4
gomduri43
2023. 7. 6. 03:56
import java.io.*;
import java.util.*;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
int n=Integer.parseInt(br.readLine());
int[][] dp=new int[n][3];
StringTokenizer st=new StringTokenizer(br.readLine());
for(int i=0; i<n; i++){
dp[i][0]=Integer.parseInt(st.nextToken());
}
for(int i=0; i<n; i++){
dp[i][1]++; //증가부분
for(int j=i+1; j<n; j++){
if(dp[j][0]>dp[i][0]){
dp[j][1]=Math.max(dp[i][1],dp[j][1]);
}
}
}
for(int i=n-1; i>=0; i--){
dp[i][2]++; //감소부분
for(int j=i-1; j>=0; j--){
if(dp[j][0]>dp[i][0]){
dp[j][2]=Math.max(dp[i][2],dp[j][2]);
}
}
}
int max=0;
for(int i=0; i<n; i++){
int temp=dp[i][1]+dp[i][2]-1;
max= max > temp ? max : temp;
}
bw.write(max+"");
bw.flush();
}
}