백준|11053번|가장 긴 증가하는 부분 수열

JSK·2022년 7월 31일
0

자바 PS풀이

목록 보기
37/51

문제설명
N개의 수열을 입력받고 그 수들로 만들 수 있는 가장 긴 증가하는 부분 수열의 길이를 구하는 문제입니다.

작동 순서
1. 배열의 길이 N을 입력받습니다.
2. 수열의 수들을 입력받고 저장합니다.
3. 각 수의 앞에 있는 자신보다 작은 숫자들만 포함되어 있고 가장 긴 부분 수열의 길이를 가져와서 거기에 +1을 해서 저장합니다.
4. 연산이 모두 끝나면 저장된 부분수열들의 길이 중 가장 긴 길이를 출력합니다.

소스코드

import java.io.*;
import java.util.*;

public class 백준_11053번_가장긴증가하는부분수열 {
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        int[] arr = new int[N];
        int[] dp = new int[N];

        StringTokenizer st = new StringTokenizer(br.readLine());
        for(int i=0;i<N;i++) arr[i]=Integer.parseInt(st.nextToken());

        dp[0]=1;

        for(int i=1;i<N;i++){
            int max=1;
            for(int j=0;j<i;j++){
                if(arr[i]>arr[j]) max=Math.max(dp[j]+1,max);
            }
            dp[i]=max;
        }

        int max=0;
        for(int i=0;i<N;i++) max=Math.max(max, dp[i]);
        System.out.print(max);
    }
}
profile
학사지만 AI하고 싶어요...

0개의 댓글