728x90
반응형
1. 문제
11722번: 가장 긴 감소하는 부분 수열
수열 A가 주어졌을 때, 가장 긴 감소하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 30, 10, 20, 20, 10} 인 경우에 가장 긴 감소하는 부분 수열은 A = {10, 30, 10, 20, 20, 10}
www.acmicpc.net
2. 풀이
3. 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int []list = new int[n];
int []dp = new int[n+1];
st = new StringTokenizer(br.readLine());
for(int i =0; i<n;i++){
list[i]= Integer.parseInt(st.nextToken());
}
dp[0]=1;
for(int i =1;i<n;i++){
dp[i]=1;
for(int j=0; j<i;j++){
if(list[j]>list[i] && dp[i]<=dp[j]){
dp[i]=dp[j]+1;
}
}
}
int max =0;
for(int i : dp) max= Math.max(max,i);
System.out.println(max);
}
}
반응형
반응형
'알고리즘 > 다이나믹 프로그래밍' 카테고리의 다른 글
[백준 2749] 피보나치 수3(Java) (0) | 2020.12.30 |
---|---|
[백준 11055] 가장 큰 증가 부분 수열(Java) (0) | 2020.12.28 |
[백준 13398] 연속합 2(Java) (0) | 2020.12.28 |
[ 백준 1932] 정수 삼각형(Java) (0) | 2020.12.28 |
[백준 11057] 오르막 수(Java) (0) | 2020.12.23 |