BOJ#2352 반도체 설계
* 문제
* 풀이
LIS 기본 문제입니다.
LIS 설명
비슷한 문제들
* 나의 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine());
int[] A = new int[N];
for (int i = 0; i < N; i++) A[i] = Integer.parseInt(st.nextToken());
System.out.println(getLISLength(A, N));
}
static int getLISLength(int[] A, int N) {
int lisLength;
int[] tailTable = new int[N];
tailTable[0] = A[0];
lisLength = 1;
for (int target = 1; target < N; target++) {
if (A[target] < tailTable[0]) {
tailTable[0] = A[target];
} else if (A[target] > tailTable[lisLength - 1]) {
tailTable[lisLength] = A[target];
lisLength++;
} else {
int idx = Arrays.binarySearch(tailTable, 0, lisLength, A[target]);
idx = idx < 0 ? -idx -1 : idx;
tailTable[idx] = A[target];
}
}
return lisLength;
}
}
'Algorithm > DP' 카테고리의 다른 글
BOJ#11049 행렬 곱셈 순서 (3) | 2017.10.27 |
---|---|
BOJ#1509 팰린드롬 분할 (0) | 2017.10.27 |
BOJ#1495 기타리스트 (0) | 2017.10.09 |
BOJ#2631 줄세우기 (0) | 2017.09.28 |
BOJ#2014 소수의 곱 (0) | 2017.09.27 |