본문 바로가기
문제풀이

백준 18353번 병사 배치하기 JAVA

by AndoneKwon 2020. 9. 29.

어렵진 않은 문제였다. 가장 긴 증가 수열을 찾고 최대 증가 수열에 포함되지 않는 숫자를 구하면 됨으로

어렵진 않은 문제였다. 가장 긴 증가 수열을 찾고 최대 증가 수열에 포함되지 않는 숫자를 구하면 됨으로

"배열의 길이 - 가장 긴 증가 수열" 을 하면 답이 나온다. 점점 DP에 감을 잡아가는건가..

import java.io.*;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.StringTokenizer;
import java.util.function.ToIntFunction;
import java.util.stream.Collectors;

public 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[] soldiers =new int[N];
        int[] dp = new int[N+1];

        Arrays.fill(dp,1);
        String temp = br.readLine();
        StringTokenizer st = new StringTokenizer(temp);
        int k = 0;
        while (st.hasMoreTokens()){
            soldiers[k++]=Integer.parseInt(st.nextToken());
        }

        for(int i=1;i<N;i++){
            for(int j=0;j<=i;j++){
                if(soldiers[i]<soldiers[j]){
                    dp[i]=Math.max(dp[i],dp[j]+1);
                }
            }
        }
        int max = 0;
        Arrays.sort(dp);

        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        bw.write(Integer.toString(N-dp[N]));
        bw.flush();
        bw.close();
    }
}

'문제풀이' 카테고리의 다른 글

백준 14888번 연산자끼워넣기 JAVA  (0) 2020.10.11
백준 2239번, 2580번 JAVA  (0) 2020.10.10
백준 1259번 팰린드롬수 JAVA  (0) 2020.09.28
백준 4963번 섬의 개수 JAVA  (0) 2020.09.28
백준 11060번 점프점프 JAVA  (0) 2020.09.21