풀이방법
사용된 것:
다이나믹 프로그래밍(DP)
2022.04.05
가장 긴 증가하는 수열의 길이를 구한다.
전체 아이 수에서 해당 수열의 길이를 빼주면 정답이다.
가장 긴 증가하는 수열의 길이를 구할 때에 DP가 사용된다.
예를 들면 다음과 같다.
3 7 5 2 6 1 4
위 수열에서 가장 긴 증가하는 수열은
3 7 5 2 6 1 4
{3, 5, 6}으로 길이가 3이다.
이 수열에 포함되어있지 않은 7, 2, 1, 4의 자리를 옮겨주어야 하므로 4명의 아이들이 자리를 옮겨야 한다.
따라서 답은 4이다.
코드
Java(2022.04.05)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws IOException{
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int[] kids = new int[n];
for(int i = 0; i<n; i++) {
kids[i] = Integer.parseInt(br.readLine());
}
int[] dp = new int[n];
Arrays.fill(dp, 1);
//가장 긴 증가하는 수열의 길이 찾기
for(int i = 1; i<n; i++) {
for(int j = 0; j<i; j++) {
if(kids[j]<kids[i]) dp[i] = Math.max(dp[j]+1, dp[i]);
}
}
Arrays.sort(dp);
//(전체 어린이 수) - (가장 긴 증가하는 수열의 길이)
System.out.print(n - dp[n-1]);
}
}
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
#1920 : 수 찾기 (0) | 2022.04.10 |
---|---|
#10250 : ACM 호텔 (0) | 2022.04.06 |
#9656 : 돌 게임 2 (0) | 2022.04.04 |
#2941 : 크로아티아 알파벳 (0) | 2022.04.02 |
#1676 : 팩토리얼 0의 개수 (0) | 2022.03.31 |