-
백준 11053 가장 긴 증가하는 부분 수열 동적계획법 활용 풀이 (Java)Problem Solving/Java 2019. 11. 1. 10:14반응형12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455public class Main {public static void main(String[] args) throws IOException {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));int n = Integer.parseInt(br.readLine());int[] a = new int[n];// 숫자들 저장할 배열int[] d = new int[n];// 증가하는 수열 길이 저장할 배열// d[i] = a[1], ~~ a[i] 까지 수열이 있을 때 a[i]를 마지막으로 하는 가장 긴 증가하는 부분 수열의 길이String[] words = br.readLine().split(" ");for (int i = 0; i < words.length; i++) {a[i] = Integer.parseInt(words[i]);}// split 해서 숫자를 넣는다for (int i = 0; i < n; i++) {// 0부터 n까지d[i] = 1;// 증가하는 수열 길이를 일 1로 놓고for (int j = 0; j < i; j++) {// 처음부터 i까지 비교하며if (a[j] < a[i] && d[i] < d[j] + 1) {// a[i]가 a[j] 보다 크고 d[j] + 1 값이 d[i]보다 길면d[i] = d[j] + 1;// 증가하는 수열 길이를 증가시켜준다}}}int answer = 0;for(int i: d) {// d 배열에서if(answer < i) {// 최대값 찾아서answer = i;}}// 출력}}반응형
'Problem Solving > Java' 카테고리의 다른 글
백준 1912 연속합 동적계획법 활용 풀이 ( Java ) (0) 2019.11.01 백준 14002 가장 긴 증가하는 부분 수열 4 동적계획법 활용 풀이 ( Java ) (0) 2019.11.01 백준 2193 이친수 동적계획법 활용 2가지 풀이 ( Java ) (0) 2019.11.01 백준 15990 1,2,3 더하기 5 동적계획법 활용 풀이 ( Java ) (0) 2019.10.30 프로그래머스 코딩테스트 연습 - 예산 문제 풀이 ( Java ) (0) 2019.10.25