// 나의 오답 functionLBS(arr) { const N = arr.length; constDP = Array.from({ length: N }, () =>1);
for (let i = 1; i < N; i++) { for (let j = 0; j < i; j++) { if (A[j] < A[i]) { DP[i] = Math.max(DP[i], DP[j] + 1); } } for (let k = i + 1; k < N; k++) { if (A[k] >= A[k - 1]) break;
DP[i] = Math.max(DP[i], DP[i] + 1); } }
returnMath.max(...DP.map((elem) => elem - 1)); }
console.log(LBS(A));
처음에는 감소하는 부분 수열을 구할 때, 역순으로 시작하지 않고 증가하는 부분 수열 구할 때 새로운 반복문으로 해당 index부터 시작하는 감소하는 부분 수열을 구하였는데 이는 DP라는 배열 하나를 가지고 반복문을 돌렸기 때문에 제대로 동작하지 않고 저장값이 꼬여버릴 수 있다.