가장 긴 균형 부분 수열

면접 대비

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

요약
연속된 구간 중 양수와 음수 개수가 같은 가장 긴 구간의 길이를 구합니다.
난이도

보통10점 중 4점

유형
누적 합, 해시맵
정답자
아직 제출이 없습니다

문제

수열에 들어 있는 양수의 개수와 음수의 개수가 같으면 그 수열을 균형 수열이라고 한다.

수열이 주어지면 연속한 원소로 이루어진 부분 수열 중에서 균형 수열인 가장 긴 것의 길이를 구한다.

입력

첫째 줄에 테스트 케이스의 개수 TT가 주어진다. (1≤T≤151 \le T \le 15)

각 테스트 케이스는 두 줄로 이루어진다. 첫째 줄에 수열의 길이 NN이 주어진다. (0≤N≤1000000 \le N \le 100000) 둘째 줄에 0이 아닌 32비트 부호 있는 정수 NN개가 공백으로 구분되어 주어진다. N=0N = 0이면 둘째 줄은 비어 있다.

출력

각 테스트 케이스마다 Case #x: M 형식으로 한 줄씩 출력한다. xx는 1부터 시작하는 테스트 케이스 번호이고, MM은 연속한 원소로 이루어진 가장 긴 균형 부분 수열의 길이이다. 균형 부분 수열이 하나도 없으면 MM은 0이다.

힌트

첫 번째 테스트 케이스에서 답이 되는 구간은 (-5 1 -7 8) 또는 (1 -7 8 -6)이고, 둘 다 양수 두 개와 음수 두 개로 이루어져 있다.

두 번째 테스트 케이스에서 답이 되는 구간은 (9 -9 -1 6 -7 -1 2 8 3 1 -2 -1)이고, 양수 여섯 개와 음수 여섯 개로 이루어져 있다.

예제1

  1. 예제 1

    입력
    2
    8
    -1 -5 1 -7 8 -6 -9 -2
    17
    5 -2 1 3 7 9 -9 -1 6 -7 -1 2 8 3 1 -2 -1
    
    예상 출력
    Case #1: 4
    Case #2: 12