문제 -> https://www.acmicpc.net/problem/1965
LCS인가 여튼 이와 비슷하게 접근하여 문제를 해결할 수 있다.
문제를 잘 읽어보아야 하는게,
입력된 상자의 데이터가 있을 때,
그 데이터의 위치를 가지고 판단을 해야한다.
(처음에 그냥 막무가내로 풀었다가 실패)
또한, 저 상자들을 최대한 넣어서 어떤 무지막지하게 큰 상자에 넣는것이다.
즉, 조건을 만족하는 상자의 개수를 세는 것.
그러면 상자는 어떻게 세느냐?
arr[i]보다 작은 값 arr[x] (x < i) 에 대해
dp값을 조사한다.
제일 큰 dp값을 기억해서 + 1.
1, 5, 2, 3, 7 의 예시로 해보자.
처음에는 모든 값이 0.
1의 왼쪽에는 작은 더 작은 수가 없으므로 그냥 +1.
이어서 "5"는 왼쪽에 더 작은 수인 "1"이 존재.
고로 1의 dp값에 +1.
아래도 위와 같은 방법으로 반복된다.
이리하여 제일 많이 담을 수 있는 상자는 4개가 되겠다.
'BOJ' 카테고리의 다른 글
[BOJ][DP] 1937. 욕심쟁이 판다 (0) | 2018.01.31 |
---|---|
[BOJ][DP] 2225. 합분해 (0) | 2018.01.29 |
[BOJ][DP] 1309. 동물원 (2) | 2018.01.26 |
[BOJ][DP] 1904. 01타일 (0) | 2018.01.25 |
[BOJ][DP] 11054. 가장 긴 바이토닉 수열 (0) | 2018.01.24 |