• 문제 링크
18353번: 병사 배치하기
첫째 줄에 N이 주어진다. (1 ≤ N ≤ 2,000) 둘째 줄에 각 병사의 전투력이 공백을 기준으로 구분되어 차례대로 주어진다. 각 병사의 전투력은 10,000,000보다 작거나 같은 자연수이다.
www.acmicpc.net
• 풀이 과정
배치하고자하는 병사 형태는 최장 증가 부분 수열이므로,
병사의 수 n에 최장 증가 부분 수열의 길이를 뺀 값이 열외해야 하는 병사의 수가 된다.
• 풀이 코드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
int n = Integer.parseInt(br.readLine());
int[] arr = new int[n], dp = new int[n];
st = new StringTokenizer(br.readLine());
for (int i = 0; i < n; i++) {
arr[i] = Integer.parseInt(st.nextToken());
dp[i] = 1;
for (int j = 0; j < i; j++) {
if (arr[i] < arr[j])
dp[i] = Math.max(dp[i], dp[j] + 1);
}
}
Arrays.sort(dp);
bw.write(String.valueOf(n - dp[n - 1]));
bw.flush();
}
}
'Problem Solving > Baekjoon' 카테고리의 다른 글
[백준] 14430 자원 캐기 - Dynamic Programming / Java (0) | 2023.03.27 |
---|---|
[백준] 1793 타일링- Dynamic Programming / Java (0) | 2023.03.26 |
[백준] 13699 점화식 - Dynamic Programming / Java (0) | 2023.03.24 |
[백준] 2358 평행선 - Data Structure / Java (0) | 2023.03.23 |
[백준] 1972 놀라운 문자열 - Data Structure / Java (0) | 2023.03.22 |
댓글