Lewis's Tech Keep

[백준] 줄세우기(2631) 본문

Java/알고리즘

[백준] 줄세우기(2631)

Lewis Seo 2021. 4. 8. 23:06

참고: www.acmicpc.net/problem/2631

 

2631번: 줄세우기

KOI 어린이집에는 N명의 아이들이 있다. 오늘은 소풍을 가는 날이다. 선생님은 1번부터 N번까지 번호가 적혀있는 번호표를 아이들의 가슴에 붙여주었다. 선생님은 아이들을 효과적으로 보호하기

www.acmicpc.net

 

- dp 문제

- LIS 를 잘 이용해야 함

- 정렬이 필요한 숫자의 최소 수 : 증가 수열의 값이 최대가 되는 값의 갯수 => LIS가 필요함

 

더보기
import java.util.*;

public class Solution {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int max = 0;
        int[] C = new int[N];
        int[] dp = new int[N];
        for (int i = 0; i < N; i++) {
            C[i] = sc.nextInt();
        }

        dp[0] = 1;

        for (int i = 1; i < N; i++) {
            dp[i] = 1;
            for (int j = 0; j < i; j++) {
                // c[0] 부터 올라가면서 확인
                if(C[i] > C[j] && dp[i] < dp[j] + 1) {
                    // 증가
                    dp[i] = dp[j] + 1;
                }
            }
            max = Math.max(max, dp[i]);
        }

        System.out.println(N-max);
    }
}

'Java > 알고리즘' 카테고리의 다른 글

[백준] 극장 좌석  (0) 2021.04.12
[프로그래머스] 길찾기 게임  (0) 2021.04.12
[백준] 내려가기  (0) 2021.04.07
[백준] 최단경로  (0) 2021.04.07
[백준] 암호코드  (0) 2021.04.05
Comments