-
접근 : 배열의 원소끼리 관계가 있을거라고 생각했다. 앞의 원소까지의 값에 따라서 그 다음 원소의 값이 결정된다. 전형적인 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 배열을 이용하지 않아도 되게끔 설계했다. 참고바란다.