[C++][백준 31235] 올라올라

PublicMinsu·2024년 1월 14일

문제

접근 방법

이전 값보다 낮은 값이 존재할 경우 그 값은 건너뛰어야 한다.
그렇기에 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;
}

풀이

감소하는 부분의 경우면 개수를 세어주고 아닐 경우 갱신해 주면 된다.

원래는 투 포인터로 풀었는데 생각해 보니 굳이 그럴 필요가 없단 것을 알게 됐다.

profile
연락 : publicminsu@naver.com

0개의 댓글