https://st-lab.tistory.com/285?category=948182
[백준] 12015번 : 가장 긴 증가하는 부분 수열 2 - JAVA [자바]
https://www.acmicpc.net/problem/12015 12015번: 가장 긴 증가하는 부분 수열 2 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1..
st-lab.tistory.com
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
import java.util.StringTokenizer;
public class Main {
static long ans = 0;
public static void main(String[] args) throws IOException{
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
//StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int N = Integer.parseInt(br.readLine());
int[] seq = new int[N];
int[] LIS = new int[N];
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
for(int i = 0; i < N; i++) {
seq[i] = Integer.parseInt(st.nextToken());
}
LIS[0] = seq[0];
int lengthOfLIS = 1;
for(int i = 1; i < N; i++) {
int key = seq[i];
if(LIS[lengthOfLIS - 1] < key) {
lengthOfLIS++;
LIS[lengthOfLIS - 1] = key;
}
else {
int lo = 0;
int hi = lengthOfLIS;
while(lo < hi) {
int mid = (lo + hi) >> 1;
if(LIS[mid] < key) {
lo = mid+1;
}
else {
hi = mid;
}
}
LIS[lo] = key;
}
}
System.out.println(lengthOfLIS);
}
}
'백준' 카테고리의 다른 글
[백준] 10158 개미 [자바] (0) | 2022.09.08 |
---|---|
[백준] 18353 병사 배치하기 [자바] (0) | 2022.09.08 |
[백준] 1300 K번째 수 [자바] (0) | 2022.08.29 |
[백준] 1007 벡터 매칭 [자바] (0) | 2022.08.17 |
[백준] 1865 웜홀 [자바] (0) | 2022.07.11 |