4272 - 연습 1.24a 짝이 맞는 연산자

Time Limit: 1s Memory Limit: 128MB

Submissions: 224 Solved: 65
Description

몇몇 연산자들 - 괄호(), bracket[], braces{}, 문자열"", 문자'', 코멘트/* */ -은 서로 짝을 가지고 있다. 연산자 짝에서 왼쪽 연산자를 여는 연산자, 오른쪽 연산자를 닫는 연산자라고 할때 이들은 다음과 같은 성질을 만족한다.

  1. 문자열"", 문자'', 코멘트/* */ 연산자는 각자의 닫는 연산자가 나타날 동안 모든 문자열 무시한다.
  2. 문자열"", 문자'' 연산자의 닫는 연산자는 바로 앞의 \를 통해서 escape될 수 있다.
  3. 왼쪽에서 부터 괄호(), bracket[], braces{} 연산자의 개수를 카운트했을때, 항상 각자의 여는 연산자의 개수는 닫는 연산자의 개수보다 많거나 같아야 한다. 예를 들어 ()())( 는 허용되지 않는다.
  4. 연산자는 서로 중첩될 수 있다. 예를 들어 ([""]) 는 허용된다.
  5. 연산자는 서로 걸쳐질 수 없다. 예를 들어 ( [)] 는 허용되지 않는다.
  6. 서로 짝을 가진 모든 연산자들의 여는 연산자의 개수와 닫는 연산자의 개수는 일치되어야 한다.

주어진 문자열이 위 규칙을 모두 만족하는지 체크하는 프로그램을 작성해보자.

Input

* Line 1 : 테스트 케이스 N (N < 1000)

* Line 2 ~ N+1 : 코드 C (C의 길이 < 1000)

Output

* Line 1 ~ N : Y, N

    - 연산자가 올바로 사용되었으면 Y, 아니라면 N을 출력

Sample Input
3
()(([]))
(/* ())*/)
/* ()()()(*/)
Sample Output
Y
Y
N