
이전 값보다 낮은 값이 존재할 경우 그 값은 건너뛰어야 한다.
그렇기에 k의 값은 건너뛸 거리를 구하는 것이다.
#include <iostream>
using namespace std;
int main()
{
ios::sync_with_stdio(0), cin.tie(0);
int N, answer = 1, curNum, prevNum, cnt = 1;
cin >> N;
cin >> prevNum;
while (--N)
{
cin >> curNum;
if (curNum < prevNum) // 감소하는 부분
{
++cnt;
}
else // 감소하지 않는 부분
{
answer = max(answer, cnt);
cnt = 1;
prevNum = curNum;
}
}
cout << max(answer, cnt);
return 0;
}
감소하는 부분의 경우면 개수를 세어주고 아닐 경우 갱신해 주면 된다.
원래는 투 포인터로 풀었는데 생각해 보니 굳이 그럴 필요가 없단 것을 알게 됐다.