본문 바로가기
알고리즘/이론 및 팁

최장 증가 부분수열 (이진탐색)

by 김어찐 2021. 9. 16.
728x90

 

import java.util.Arrays;
import java.util.Scanner;

public class DP2_LISTest2 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		int[] arr = new int[N];
		int[] LIS = new int[N];
		for (int i = 0; i < N; i++) {
			arr[i]=sc.nextInt();
		}
		
		int  size=0;
		for (int i = 0; i < N; i++) {
			int temp = Math.abs(Arrays.binarySearch(LIS, 0,size,arr[i]))-1;
			LIS[temp] = arr[i];
			if(temp==size)size++;
		}
		System.out.println(size);
	}
}

콘솔

728x90

'알고리즘 > 이론 및 팁' 카테고리의 다른 글

최대 공약수  (0) 2021.09.05
프림 알고리즘  (0) 2021.08.25