반응형
import java.util.Scanner;
public class Main{
static public void main(String args[]){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
//코드....
int arr []=new int [n];
for(int i=0;i<n;i++)
arr[i]=sc.nextInt();
int dp []= new int [n];
int ans=1;
for(int i=0;i<n;i++){
dp[i]=1;
for(int j=0;j<i;j++){
if(arr[i]>arr[j]) {
//이미 dp[i]가 새로운 값보다 크다면 갱신할 필요 없음
dp[i] = Math.max(dp[i], dp[j]+1);
/* 이코드랑 max 쓰는거랑 똑같음
int temp=dp[j]+1;
if(temp>dp[i])
dp[i]=temp;
*/
}
//dp[n-1]이 답인게 아니라, dp 배열 중 가장 큰 값이 답이므로,
//dp[i]를 구할때마다 기존 최댓값과 비교해서 ans를 갱신!
ans=Math.max(ans,dp[i]);
}
}
System.out.println(ans);
}
}
반응형
댓글