‘(’, ‘)’로 이루어진 문자열이 올바른 괄호 문자열이라는 것은 다음을 의미합니다.
(’와 ‘)’를 붙여 만든 문자열 “(S)” 는 올바른 괄호 문자열입니다.예를 들어, “(())()”, “()()”은 올바른 괄호 문자열이고 “)(”, “())(”는 올바른 괄호문자열이 아닙니다.
문자열 S가 주어집니다. S는 ‘(’, ‘)’, ‘?’, ‘*’로 이루어진 문자열입니다. ‘?’ 문자를 ‘(’이나 ‘)’로, ‘*’ 문자를 ‘(’와 ‘)’로 이루어진 길이가 0 이상인 원하는 문자열로 대체하여 S를 올바른 괄호 문자열로 만들 수 있나요?
첫 줄에 테스트케이스의 수 T가 주어집니다. (1≤T≤10,000)
각 테스트케이스의 첫 줄에는 ‘(’, ‘)’, ‘?’, ‘*’로 이루어진 길이가 1 이상 500,000 이하인 문자열 S가 주어집니다.
입력에서 주어진 문자열 S의 길이 합은 500,000을 넘지 않습니다.
각 테스트케이스마다 한 줄에 하나씩, ‘?’ 문자를 ‘(’이나 ‘)’로, ‘*’ 문자를 ‘(’, ‘)’로 이루어진 길이가 0 이상인 원하는 문자열로 대체하여 S를 올바른 괄호 문자열로 만들 수 있다면 “YES”, 불가능하면 “NO”를 출력하세요.