삐까냥의 파도타기

11053번) 가장 긴 증가하는 부분 수열 본문

코딩/백준 알고리즘

11053번) 가장 긴 증가하는 부분 수열

금손형아 2017. 10. 11. 15:20

문제 출처 : https://www.acmicpc.net/problem/11053



import java.util.Scanner;


public class Q11053 {

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

int input = scanner.nextInt();

int[][] array = new int[input][2]; //0번째 -> input 값, 1번째 -> 증가 부분 수열의 길

for ( int i = 0; i < input; i++ ) {

array[i][0] = scanner.nextInt();


//for문을 거꾸로 돌려야 if문을 그나마 적게 수행

for ( int j = i-1; j >= 0; j-- ) {

//증가 부분 수열이면서, 현재까지 증가 부분 수열의 길이가 클 경우

if ( array[j][0] < array[i][0] && array[i][1] < array[j][1] ) {

array[i][1] = array[j][1];

}

}

array[i][1] += 1;

}

scanner.close();

//가장 긴 증가 부분 수열 길이 찾기

int max = 0;

for ( int i = 0; i < input; i++ ) {

max = max > array[i][1] ? max : array[i][1];

}

System.out.println(max);

}

} 




'코딩 > 백준 알고리즘' 카테고리의 다른 글

2217번) 로프 - 그리디  (0) 2017.10.26
11399번) ATM - 그리디  (0) 2017.10.26
10844번) 쉬운 계단 수  (0) 2017.10.11
1010번) 다리 놓기  (0) 2017.10.11
1912번) 연속합  (0) 2017.10.10