dp로 풀었다.
n개의 수를 이중 배열로 비교하며 if (arr[j] < arr[i])
에서 dp[i] = max (dp[i], dp[j] + 1)
을 수행하는 방식으로 풀었다.
여기보고 이해했다. dp 어려워
#include <iostream>
using namespace std;
int n, a, ans;
int arr[1001];
int dp[1001];
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> arr[i];
}
for (int i = 0; i < n; i++)
{
dp[i] = 1;
for(int j=0;j<i;j++)
{
if (arr[j] < arr[i])
{
dp[i] = max(dp[i], dp[j] + 1);
}
}
if (dp[i] > ans)
ans = dp[i];
}
cout << ans << endl;
}
최근 문제 풀이에 현타가 와서 아무것도 안 하고 놀러다녔다. 그러다가 라매개발자님의 영상을 보고 코딩하고 싶다는 생각이 들었다. 햄찌의 든든한 위로까지 들으니까 의욕 샘솟음 공부하기 싫을 땐 cs면접 준비나 조금씩 해야겠다.
하반기 다됐는데 아직도 상반기로 남아있는 내 깃허브ㅎㅎ 새로 만들어야 할 이유가 딱히 없어서 그대로 쓰고있다. 여유있을 때 저장소 이름 바꿔야지~~