[백준] BOJ 11054 가장 긴 바이토닉 부분 수열

SONGB·2023년 7월 30일
0

알고

목록 보기
8/12
post-thumbnail

문제

BOJ 11054 가장 긴 바이토닉 부분 수열

https://www.acmicpc.net/problem/11054


새로운 개쓰레기요일을 앞두고 있다.
웬지 하루 죙일 기분이 안 좋더라 허허허
월요일에는 더 알고를 풀기 싫기에 한 문제 더 풀어봤다
잘못된 선택이었다.
생각보다 뒤지게 안 풀렸다.
LIS 기억 안 났음...
깔깔깔
웃기다 사실 안 웃김


코드

package boj;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class boj_11054_가장긴바이토닉부분 {

	public static void main(String[] args)throws Exception {
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		
		int n=Integer.parseInt(br.readLine());
		
		int []right=new int[n];
		int []left=new int[n];
		
		int []arr=new int[n];
		StringTokenizer st=new StringTokenizer(br.readLine());
		for(int i=0;i<n;i++) {
			arr[i]=Integer.parseInt(st.nextToken());
		}


		for(int i=0;i<n;i++) {
			left[i]=1;
			for(int j=0;j<i;j++) {
				if(arr[j]<arr[i]&&left[i]<=left[j]) {
					left[i]=left[j]+1;
				}
			}
		}
		
		for(int i=n-1;i>=0;i--) {
			right[i]=1;
			for(int j=n-1;j>i;j--) {
				if(arr[j]<arr[i]&&right[i]<=right[j]) {
					right[i]=right[j]+1;
				}
			}
		}
		
		int max=0;
		for(int i=0;i<n;i++) {
			max=Math.max(max, left[i]+right[i]-1);//본인+왼+오
		}
		
		System.out.println(max);
	}

}
profile
⚽⚾데굴데굴 굴러가는 내 맘대로 벨로그🏀🏐

0개의 댓글