백준 2631번 - 줄세우기

장근영·2024년 9월 21일
0

BOJ - DP

목록 보기
24/38

문제

백준 2631번 - 줄세우기


아이디어

  • 문제 예제에서 옮겨지지 않은 번호의 특징이 무엇인지 살펴보았다.
  • 옮겨지지 않은 번호는 이미 정렬이 된 상태이기 때문에 움직이지 않아도 된다.
  • 즉, 전체 길이 N에서 LIS를 구해 뺀 값이 정답이 된다.

예상 시간 복잡도

  • 예상 시간 복잡도 : O(N^2)

코드 구현

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class BJ_2631 {
    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int n = Integer.parseInt(br.readLine());

        int[] arr = new int[n];
        int[] dp = new int[n];

        for (int i = 0; i < n; i++) {
            arr[i] = Integer.parseInt(br.readLine());
            dp[i] = 1;
        }

        int lis = 1;

        for (int i = 1; i < n; i++) {
            for (int j = 0; j < i; j++) {
                if (arr[i] > arr[j] && dp[i] + 1 == dp[j] + 1) {
                    dp[i] = dp[j] + 1;
                }
            }
            lis = Math.max(lis, dp[i]);
        }

        System.out.println(n - lis);
    }
}

profile
오늘 할 일을 내일로 미루지 말자.

0개의 댓글