그리디(?)적으로 생각했을 때 그냥 자기 자리로 찾아가는 녀석의 수를 줄이면 된다.
문제가 원하는 것은 오름차순으로 정렬을 하는데 움직이는 학생의 수를 줄이는 것이므로 전체에서 오름차순으로 정렬되어 있는 최대 학생의 수를 빼면 된다는 것을 쉽게 알 수 있다.
즉 전체에서 lis를 빼주면 된다.
더보기
int main() {
fastio;
int n;
cin>>n;
vector<int>arr(n);
for(auto&v:arr)cin>>v;
vector<int>dp(n,0);
int ans=0;
for(int i=0; i<n; i++){
dp[i]=1;
for(int j=0; j<i; j++){
if(arr[i]>arr[j])dp[i]=max(dp[i],dp[j]+1);
}
ans=max(ans,dp[i]);
}
cout<<n-ans;
return 0;
}
'PS & BOJ' 카테고리의 다른 글
BOJ 2203 - 선거구 나누기 (0) | 2024.10.15 |
---|---|
골드 정복기 (gold 5~3) (0) | 2024.08.21 |
BOJ 15486 - 퇴사 2 (2) | 2024.07.07 |
DP 공부(1) (0) | 2024.07.06 |
BOJ 16225 - 제271회 웰노운컵 (0) | 2024.05.10 |