본문 바로가기
Beakjoon&프로그래머스/Java

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

by 현장 2026. 1. 13.

-Code

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

public class BOJ11053 {
    public static void main(String[] args) throws IOException {
        BufferedReader br =
                new BufferedReader(new InputStreamReader(System.in));

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

        int[] nums = new int[n];
        StringTokenizer st = new StringTokenizer(br.readLine());
        for (int i = 0; i < n; i++) {
            nums[i] = Integer.parseInt(st.nextToken());
        }
        // LIS 알고리즘
        int[] dp = new int[n];
        for (int i = 0; i < n; i++) {
            dp[i] = 1;
            for (int j = 0; j < i; j++) {
                if (nums[i] > nums[j]){
                    dp[i] = Math.max(dp[i], dp[j] + 1);
                }
            }
        }

        int answer = Arrays.stream(dp).max().getAsInt();
        System.out.println(answer);
    }
}

LIS 알고리즘을 까먹어서 찾아본 후 다음날 다시 풀어봤습니다.