Longest Increasing Subsequence
최장 증가 부분 수열
→ 어떤 수열이 왼쪽에서 오른쪽으로 나열돼 있으면, 그 배열 순서를 유지하면서 크기가 점진적으로 커지는 가장 긴 부분수열을 추출하는 문제
예시 문제
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Solution {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
StringTokenizer st = null;
int[] arr = null;
int[] dp = null;
StringBuilder sb = new StringBuilder();
for(int tc=1;tc<=T;tc++) {
int N = Integer.parseInt(br.readLine());
st = new StringTokenizer(br.readLine());
arr = new int[N];
dp = new int[N];
int maxValue = 0;
for(int i=0;i<N;i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
for(int i=0;i<N;i++) {
dp[i] = 1;
for(int j=0;j<i;j++) {
if(arr[i] > arr[j] && dp[j] + 1 > dp[i]) {
dp[i] = dp[j] + 1;
}
}
if(maxValue < dp[i]) maxValue = dp[i];
}
sb.append("#"+tc+" "+maxValue+"\n");
}
System.out.println(sb);
}
}