티스토리 뷰
문제
출처 : https://www.acmicpc.net/problem/2631
풀이과정
어제 푼 문제와 똑같이 LIS(최장 부분 증가 수열)에 관한 문제이다. 아직 LIS 개념을 정확히 모르겠다. 더 찾아봐야겠다.
DP[i] 를 i번째 원소를 끝으로 가지는 배열이 가질 수 있는 최장 부분 증가 수열의 길이라고 할 때, 정답을 출력하려면 입력 배열의 총 길이에서 최장 부분 증가 수열의 길이를 빼면 된다.
소스코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | #include <iostream> #pragma warning(disable:4996) int children[201], DP[201]; int main() { int N,max=0; scanf("%d", &N); for (int i = 1; i <= N; i++) { scanf("%d", &children[i]); } for (int i = 1; i <= N; i++) { DP[i] = 1; for (int j = 1; j < i; j++) { if (children[j] < children[i] && DP[i] < DP[j] + 1) DP[i]++; if (max < DP[i]) max = DP[i]; } } printf("%d", N-max); return 0; } | cs |
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 1152번 단어의 개수 (0) | 2017.12.09 |
---|---|
[백준] 10808번 알파벳 개수 (0) | 2017.12.08 |
[백준] 11055번 가장 큰 증가 부분 수열 (0) | 2017.12.05 |
[백준] 2579번 계단 오르기 (0) | 2017.12.01 |
[백준] 2156번 포도주 시식 (0) | 2017.11.30 |