만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

지그재그 부분배열

면접 대비

시간 제한1초메모리 제한512 MB

요약
각 테스트 케이스에서 인접한 원소가 올라갔다 내려갔다를 번갈아 나타내는 길이 2 이상의 연속 부분배열 개수를 구합니다.
난이도

보통10점 중 5점

유형
배열, 동적 계획법
정답자
아직 제출이 없습니다

문제

길이가 nn인 정수 배열 AA가 주어지고, A[i]A[i]는 ii번째 원소이다 (i=1,2,…,ni = 1, 2, \ldots, n). 1≤i≤j≤n1 \le i \le j \le n을 만족하는 인덱스 i,ji, j에 대해 A[i,j]A[i, j]는 ii번째 원소부터 jj번째 원소까지 (j−i+1)(j-i+1)개의 원소로 이루어진 AA의 부분 배열이다. 이 부분 배열의 길이는 (j−i+1)(j-i+1)이다. 예를 들어 A=[2,2,1,3,2]A = [2, 2, 1, 3, 2]이면 A[2,3]=[2,1]A[2, 3] = [2, 1]이고 A[3,5]=[1,3,2]A[3, 5] = [1, 3, 2]이다.

길이가 2 이상인 (i<ji < j) 부분 배열 A[i,j]A[i, j]의 원소가 증가와 감소를 번갈아 반복하면 지그재그 부분 배열이라 한다. 구체적으로 다음 조건 중 하나를 만족해야 한다.

  • 조건 1: i≤k<ji \le k < j인 모든 kk에 대해, (k−i)(k-i)가 짝수이면 A[k]<A[k+1]A[k] < A[k+1]이고, 홀수이면 A[k]>A[k+1]A[k] > A[k+1]이다.
  • 조건 2: i≤k<ji \le k < j인 모든 kk에 대해, (k−i)(k-i)가 짝수이면 A[k]>A[k+1]A[k] > A[k+1]이고, 홀수이면 A[k]<A[k+1]A[k] < A[k+1]이다.

예를 들어 A=[2,2,1,3,2]A = [2, 2, 1, 3, 2]일 때 A[2,3]A[2, 3]과 A[3,5]A[3, 5]는 지그재그 부분 배열이고, A[1,2]A[1, 2]와 A[1,3]A[1, 3]은 지그재그 부분 배열이 아니다.

Alice는 AA의 부분 배열 중 지그재그 부분 배열이 몇 개인지 알고 싶어 한다. Alice를 도와 그 개수를 구하라.

입력

첫 줄에 테스트 케이스의 수 TT가 주어진다. 각 테스트 케이스는 두 줄로 주어진다. 첫 줄에 nn이 주어지고, 둘째 줄에 공백으로 구분된 nn개의 정수가 주어진다.

출력

각 테스트 케이스의 정답, 즉 지그재그 부분 배열의 개수를 한 줄에 하나씩 출력한다.

제한

1≤T≤101 \le T \le 10

1≤n≤100,0001 \le n \le 100{,}000

−109≤A[i]≤109-10^9 \le A[i] \le 10^9 (1≤i≤n1 \le i \le n)

예제1

  1. 예제 1

    입력
    4
    5
    2 2 1 3 2
    4
    2 0 2 2
    5
    1 2 3 2 1
    7
    1 2 1 2 1 2 1
    
    예상 출력
    6
    3
    5
    21