Magicka (작은 입력)
면접 대비시간 제한5초메모리 제한512 MB
원소를 순서대로 호출하면서 마지막 두 원소에 결합 규칙을 적용하고 대립하는 원소가 나타나면 목록 전체를 비워 결과를 구합니다.
문제
마법사인 당신은 기본 원소 8개를 소환한다. 기본 원소는 Q, W, E, R, A, S, D, F 중 한 글자다. 원소를 소환하면 그 원소가 원소 목록의 맨 뒤에 붙는다. 예를 들어 W를 소환한 다음 A를 소환하면(줄여서 "WA를 소환한다"고 쓴다) 원소 목록은 [W, A]가 된다.
기본 원소 두 개가 결합해 기본 원소가 아닌 원소(나머지 대문자 18개 중 하나)를 만드는 조합이 입력으로 주어진다. Q와 F가 결합해 T가 된다고 하자. 조합을 이루는 두 원소가 원소 목록의 맨 뒤 두 자리에 놓이는 순간, 두 원소는 즉시 목록에서 빠지고 결합해서 만들어진 원소 하나가 그 자리에 들어간다. 이 예에서 목록이 [A, Q, F]나 [A, F, Q]가 되면 목록은 [A, T]가 된다.
서로 상극인 기본 원소 쌍도 입력으로 주어진다. 원소를 소환한 직후, 그 원소가 결합해 다른 원소로 바뀌지 않았고 목록 안에 그 원소와 상극인 원소가 하나라도 있으면 원소 목록 전체가 비워진다.
Q와 F가 결합해 T가 되고 R과 F가 상극인 경우, 왼쪽부터 차례로 소환하면 결과는 다음과 같다.
- QF → [T] (Q와 F가 결합해 T가 된다)
- QEF → [Q, E, F] (Q와 F가 맨 뒤에 함께 놓인 적이 없어 결합하지 않는다)
- RFE → [E] (F와 R이 상극이라 목록이 비워지고, 그다음 E를 소환한다)
- REF → [] (F와 R이 상극이라 목록이 비워진다)
- RQF → [R, T] (QF가 결합해 T가 되므로 목록이 비워지지 않는다)
- RFQ → [Q] (F와 R이 상극이라 목록이 비워진다)
소환할 원소의 순서가 주어질 때, 모두 소환한 뒤 원소 목록에 무엇이 남는지 구하는 문제다.
입력
첫 줄에 테스트 케이스의 개수 가 주어진다. 이어지는 개의 줄에 테스트 케이스가 한 줄에 하나씩 주어지고, 각 줄에는 다음 값이 공백으로 구분되어 순서대로 들어온다.
먼저 정수 와 길이가 3인 문자열 개가 온다. 각 문자열은 기본 원소 두 개와 기본 원소가 아닌 원소 하나로 이루어지며, 앞의 기본 원소 두 개가 결합해 마지막 원소가 된다는 뜻이다. 다음으로 정수 와 길이가 2인 문자열 개가 온다. 각 문자열은 서로 상극인 기본 원소 두 개다. 마지막으로 정수 과 길이가 인 문자열 하나가 온다. 이 문자열은 소환할 기본 원소의 순서이고, 왼쪽 글자부터 하나씩 소환한다.
제한
- 기본 원소 쌍 하나가 나오는 조합은 많아야 하나다. 같은 쌍이 조합에도 나오면서 상극일 수는 있다.
- 자기 자신과 상극인 기본 원소는 없다.
- 컴퓨터 게임 Magicka와 달리 원소 목록의 길이에는 제한이 없다.
출력
각 테스트 케이스마다 "Case #x: y" 형식으로 한 줄씩 출력한다. x는 1부터 시작하는 케이스 번호이고, y는 최종 원소 목록을 "[e0, e1, ...]" 형식으로 적은 것이다. ei는 목록의 i번째 원소이며, 원소 사이는 쉼표 하나와 공백 하나로 구분한다. 목록이 비어 있으면 "[]"를 출력한다.