백준 18353번: 병사 배치하기

최창효·2022년 12월 3일
0
post-thumbnail

문제 설명

접근법

  • 문제의 조건은 가장 긴 감소하는 부분수열과 동일합니다.
  • N이 작을 때 가장 긴 감소하는 부분수열은 O(N^2)인 2중for문으로 구할 수 있습니다.

정답

import java.util.*;
import java.io.*;
import java.math.*;

public class Main {
	public static void main(String[] args) throws Exception{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int N = Integer.parseInt(br.readLine());
		int[] arr = new int[N];
		StringTokenizer st = new StringTokenizer(br.readLine());
		for (int i = 0; i < N; i++) {
			arr[i]  = Integer.parseInt(st.nextToken());
		}
		int[] dp = new int[N];
		int lisLength = 1;
		Arrays.fill(dp, 1);
		for (int i = 0; i < N; i++) {
			for (int j = 0; j < i; j++) {
				if(arr[i] < arr[j]) {
					dp[i] = Math.max(dp[j]+1,dp[i]);
					lisLength = Math.max(dp[i], lisLength);
				}
			}
		}
		System.out.println(N-lisLength);
	}
}
profile
기록하고 정리하는 걸 좋아하는 개발자.

0개의 댓글