패키지
[백준][DP]11722_가장 긴 감소하는 부분 수열 본문
문제 --> https://www.acmicpc.net/problem/11722
11053과 반대로 생각해서 풀면 된다!
그런데 전에 풀었던 것 보다 메모리가 늘어났다,, 이유가 뭘까,,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | import java.util.*; public class P11722 { public static void main(String[] args) { //LIS 의 반대로 풀기 //수열A를 뒤집어서 가장 긴 증가하는 부분 수열을 구하는 방법 Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int a[] = new int[n]; for (int i = 0; i < n; i++) { a[i] = sc.nextInt(); } int d[] = new int[n]; //반대로 이번에는, j > i , a[j] > a[i] for (int i = 0; i < n; i++) { d[i] = 1; for (int j = 0; j < i; j++) { if (a[j] > a[i] && d[i] < d[j] + 1) { d[i] = d[j] + 1; } } } //줄어드는 순서대로 정렬된 배열 d의 최댓값 int ans = d[0]; for (int i = 0; i < n; i++) { if(ans < d[i]) { ans = d[i]; } } System.out.println(ans); } } | cs |
Comments