ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2491번: 수열
    DP 2023. 10. 14. 22:38

    접근 : 배열의 원소끼리 관계가 있을거라고 생각했다. 앞의 원소까지의 값에 따라서 그 다음 원소의 값이 결정된다. 전형적인 DP문제이다.

    풀이 :  DP라는 것을 알고 접근했을 때는 테이블을 현재까지의 연속된 가장 긴/짧은 구간, 점화식을 긴/짧은 것 각각

    d1[i+1] = d1[i] + 1, if(arr[i] <= arr[i+1]), d2[i+1] = d2[i] + 1, if(arr[i] >= arr[i+1]) 로 했다. 초깃값은 d1, d2를 전부 1로 초기화하고 d1[1] && d2[1] == 1, d1[2] && d2[2] == 2 이다. 

     

    <다른 사람 풀이>

    void Solution()
    {
        int Answer = 1;
        int Len = 1;
        int Len2 = 1;
        for (int i = 1; i < N; i++)
        {
            if (Arr[i] <= Arr[i + 1]) Len++;
            else Len = 1;
     
            if (Arr[i] >= Arr[i + 1]) Len2++;
            else Len2 = 1;
     
            int Result = Max(Len, Len2);
            Answer = Max(Answer, Result);
        }
        cout << Answer << endl;
    }

    풀이 : 이 풀이는 나의 풀이를 정말 깔끔하게 다듬은 느낌이다. 논리는 다른게 없지만 구현이 달라 인용해본다. Len이라는 변수를 이용해서 나처럼 굳이 d1,d2 배열을 이용하지 않아도 되게끔 설계했다. 참고바란다.

    'DP' 카테고리의 다른 글

    DP  (0) 2023.10.14
Designed by Tistory.