본문 바로가기

알고리즘구현능력/문제해결능력

[java] 백준/11053 가장 긴 증가하는 부분 수열

 

가장 긴 증가하는 부분 수열..

A[i-1] , A[i] 비교

 

package basic;

 

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.util.StringTokenizer;

 

public class LongIncrasesu {

 

    public static void main(String[] args) throws Exception{

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        

        int ans = 0;

        int n = new Integer(br.readLine());

        int num[] = new int [n];

        int dp[] = new int [n];

        StringTokenizer st = new StringTokenizer(br.readLine());

        for(int i=0;i<n;i++){

            num[i] = new Integer(st.nextToken());

        }

        for(int i=0;i<n;i++){

            dp[i] = 1;

            for(int j=0;j<=i;j++){

                if(num[i] >num[j]&&dp[i]<dp[j]+1){ // dp[i] <dp[j]+1 이부분을 간과하기 쉬운 부분인거같다..

                  dp[i] = dp[j]+1;    

                }

                ans =  Math.max(ans, dp[i]);

            }

        }

        System.out.println(ans);

    }

 

}