4271 - 연습 1.24 짝이 맞는 연산자

Time Limit: 1s Memory Limit: 128MB

Submissions: 1223 Solved: 370
Description

연산자들 중에서는 괄호(), bracket[], braces{}는 짝을 가지는 연산자 이다. 이들 연산자는 중첩될 수 있기 때문에 (([{}]))()와 같이 복잡하게 사용될 수 있다. 짝을 가지는 연산자가 올바르게 사용되는지 체크하기 위해서는 일반적으로 stack 자료 구조가 필요하지만, 이를 활용하지 않고 문제를 해결하고자 한다. 

다행이도, 연산자들은 중첩이 될 순 있지만, 종류가 같은 연산자 하고만 중첩이 된다고 한다. 예를 들어, ()(())는 허용되지만 ({[]})는 허용되지 않는다. 

연산자가 올바르게 짝이 지어져 있는지 확인하는 프로그램을 작성해보자. 

Input

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

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

Output

* Line 1 ~ N : Y, N

    - 연산자의 짝이 맞으면 Y, 맞지 않는다면 N을 출력

 

Sample Input
3
(){{xxx}}
) ({}
(()){()
Sample Output
Y
N
N
Hint

이 문제를 풀기위해서는 scanf 를 사용해야 되지만, 아직 안 배웠죠. 그래서 가르쳐 줄께요. 정답체크에 사용하는 테스트 케이스 N 은 10이에요.