설명

부분증가수열의 최대 길이를 출력한다.

 

 

 

예시

8

5 3 7 8 6 2 9 4

 

4

 

 

 

 

풀이

j=i-1부터 0까지 감소하면서

 

만약 나보다 arr[j]가 작고&& len[j]가 max보다 크다면 max값을 바꾸어준다.

 

그리고 그 max+1한값이 내가된다.

 

그리고 len배열을 돌면서 제일 큰 값이 answer가 된다.

 

import java.util.*;



class Main {
	
	public static void main(String[] args){
		Main T = new Main();
		Scanner sc = new Scanner(System.in);
		
		int n= sc.nextInt();
		
		int [] arr = new int[n];
		int [] len = new int[n];
		for(int i=0; i<n; i++) {
			arr[i]=sc.nextInt();
		}
		int answer=0;
		
		for(int i=0; i<n ;i++) {
			int max=0;
			for(int j=i-1; j>=0; j--) {
				if(arr[j]<arr[i] &&len[j]>max) {
					max=len[j];
				}
			}
			len[i]=max+1;
			answer=Math.max(answer, len[i]);
		}
		

		System.out.println(answer);
		

	}

	
}

 

'알고리즘기초 > DP' 카테고리의 다른 글

06. 최대점수 구하기  (0) 2022.10.03
05. 동전교환  (0) 2022.10.03
04. 가장 높은 탑 쌓기  (0) 2022.10.02
02. 돌다리 건너기  (0) 2022.10.02
01. 계단오르기  (0) 2022.10.02

+ Recent posts