Algorithm/DP

BOJ#2352 반도체 설계

밤이2209 2017. 10. 9. 01:59

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