목록문제 (388)
sm 기술 블로그
import java.util.*; import java.io.*; import java.security.DrbgParameters.NextBytes; class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()); int[] A = new int[N]; String[] tmp = br.readLine().split(" "); for(int i = 0; i < tmp.length; i++) { A[i] = Integer.parseInt(..
본 코드는 PyPy로 제출해야 합니다. import sys input = sys.stdin.readline N = int(input()) A = list(map(int, input().split())) LIS = [] LIS.append(A[0]) for i in range(1, len(A)): if(A[i] > LIS[-1]): LIS.append(A[i]) else: start = 0 end = len(LIS) while(end - start >= 0): mid = (start + end) // 2 if(LIS[mid] < A[i]): start = mid + 1 else: end = mid - 1 LIS[start] = A[i] print(len(LIS)) 문제요약 이분 탐색을 이용하여 가장 긴 수..
import java.util.*; import java.io.*; import java.security.DrbgParameters.NextBytes; class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); long N = sc.nextInt(); long K = sc.nextInt(); long start = 1; long end = K; long result = 0; while (end - start >= 0) { long mid = (start + end) / 2; long cnt = 0; for (int i = 1; i