백준 JAVA 11722번 가장 긴 감소하는 부분 수열
문제 링크: https://www.acmicpc.net/problem/11722
11722번: 가장 긴 감소하는 부분 수열
수열 A가 주어졌을 때, 가장 긴 감소하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 30, 10, 20, 20, 10} 인 경우에 가장 긴 감소하는 부분 수열은 A = {10, 30, 10, 20, 20, 10}
www.acmicpc.net

해당 문제를 처음에는 DFS로 시도했지만 시간초과로 실패했다. 그래서 DP로 다시 풀어 보았다.
import java.math.BigInteger; import java.util.*; import java.io.*; public class Main { static int [] arr; static int t; public static void main(String [] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); t= Integer.parseInt(br.readLine()); arr = new int [t+1]; String[] s = br.readLine().split(" "); for(int i=0; i<t; i++){ arr[i+1]=Integer.parseInt(s[i]); } int d[] = new int[t + 1]; d[1] = 1; for (int i = 2; i <= t; i++) { d[i] = 1; for (int j = 1; j < i; j++) { if (arr[i] < arr[j] && d[i] <= d[j]) { d[i] = d[j] + 1; } else if (arr[i] == arr[j]) { d[i] = d[j]; } } } int max = 0; for (int i = 1; i <= t; i++) max = Math.max(d[i], max); System.out.println(max); } }

'Alogorithm > DP' 카테고리의 다른 글
백준 2156 [자바] java 포도주 시식 (0) | 2022.02.22 |
---|---|
백준 11053[자바] java 가장 긴 증가하는 부분 수열 (0) | 2022.02.19 |
백준 1106 [자바] java 호텔 (0) | 2022.01.11 |
백준 JAVA 11726번 2xn 타일 (0) | 2021.12.29 |
백준 JAVA 17626번 Four Squares (0) | 2021.12.09 |
댓글
이 글 공유하기
다른 글
-
백준 11053[자바] java 가장 긴 증가하는 부분 수열
백준 11053[자바] java 가장 긴 증가하는 부분 수열
2022.02.19 -
백준 1106 [자바] java 호텔
백준 1106 [자바] java 호텔
2022.01.11 -
백준 JAVA 11726번 2xn 타일
백준 JAVA 11726번 2xn 타일
2021.12.29 -
백준 JAVA 17626번 Four Squares
백준 JAVA 17626번 Four Squares
2021.12.09
댓글을 사용할 수 없습니다.