-
[7570] 줄 세우기BOJ 2021. 12. 26. 19:44
https://www.acmicpc.net/problem/7570
7570번: 줄 세우기
입력은 2 개의 줄로 이루어져 있다. 첫 줄에는 어린이 수를 나타내는 정수가 주어진다. 둘째 줄에는 처음에 줄서있는 어린이들의 번호가 차례대로 주어진다. 주어진 번호들 사이에는 공백이 하
www.acmicpc.net
<문제>
단순 nlogn LIS인줄 알았는데, {1 3 4 2} 에서 한번에 {1 2 3 4}를 만들 방법이 없다.
{1 3 4 2} -> {2 1 3 4} -> {1 2 3 4}처럼, 두번에 걸쳐서 이동해야 한다.
연속하는 수로 이루어진 LIS를 찾아주면 되겠다.
어디든 끼워넣을 수 있는 "[2631] 줄세우기" 문제와 연계하여 곱씹어볼만한 문제다.
<소스코드>
1234567891011121314151617#include <bits/stdc++.h>using namespace std;int n, cnt, a[1000005], dp[1000005];int main(void) {ios_base::sync_with_stdio(0);cin.tie(0);cin >> n;int i;for (i = 0; i < n; i++) {int x;cin >> x;dp[x] = dp[x - 1] + 1;cnt = max(dp[x], cnt);}cout << n - cnt;return 0;}cs 'BOJ' 카테고리의 다른 글
[14908] 구두 수선공 (0) 2021.12.28 [16496] 큰 수 만들기 (0) 2021.12.27 [9237] 이장님 초대 (0) 2021.12.25 [15904] UCPC는 무엇의 약자일까? (0) 2021.12.24 [10610] 30 (0) 2021.12.24