페이지가 로드되지 않나요? 여기를 눌러보면 고쳐질 수도 있어요.
Placeholder

#2449

Magicka 1s - MB

문제

Magicka™은 Arrowhead Game Studios에서 개발한 액션 어드벤쳐 게임이다. Magicka에서 당신은 마법사로 플레이를 하게 될 경우, 마법 주문을 수행하기 위해서 원소를 부르거나 조합하게 된다. 본 문제는 위의 방식과 유사하나, 당신이 Magicka 게임을 해본적이 없다고 가정한다.

 

마법사로서 당신은 8개의 "기본" 원소를 부를 수 있다. 각 원소는 하나의 영문 대문자로 표현되며 이는 다음과 같다. {Q, W, E, R, A, S, D, F}

 

당신이 원소를 부르게 되면, 이는 원소 리스트에 추가 된다. 예를 들어 W를 부르고 A를 부르면( 다음 부터는 "WA를 부름" 이라고 표현) 원소 리스트는 [W, A]가 되며, 이경우 원소를 부르는 순서에 따른 원소 리스트를 적으면 다음과 같다.

 

 

두개의 "기본" 원소는 다른 "비 기본" 원소로 바뀔 수 있다. "비 기본" 원소는 "기본" 원소를 제외한 나머지 알파벳 문자가 된다.

 

예를 들어 "기본" 원소 Q와 F는 "비 기본" 원소 T로 합쳐진다. 합쳐지는 경우는 서로 인접해 있는 경우에만 가능하다. 만약 원소 리스트 맨 뒤의 2개의 원소가 "비 기본" 원소로 합쳐질 수 있을 경우에는 2개의 원소는 원소 리스트에서 사라지고, 이에 대응되는 "비 기본" 원소로 합쳐지게 된다. Q와 F가 T로 합쳐지는 예를 들면 원소 리스트가 [A, Q, F] 혹은 [A, F, Q] 일 경우 맨 뒤에 Q와 F가 T로 합쳐질 수 있으므로 결과적으로 [A, T] 가 된다.

 

다음으로 "기본" 원소간의 쌍이 서로 상쇄 되는 경우가 있다. 만약 상쇄되는 원소 2개가 원소 리스트에 존재하고, 그 원소들 모두 다른 원소와 합쳐지지 않을 경우, 원소 리스트는 상쇄가 발생하여, 원소 리스트는 비워지게 된다.

 

이러한 것은 입력 순서대로 이루어지며 두 가지 조건이 서로 겹치는 경우 합쳐지는 것이 우선이다. 또한 합쳐지는 것은 서로 인접한 경우에만 가능하다.

 

예를 들어, Q와 F가 T로 합쳐지고, Q과 F는 서로를 상쇄한다 하자. 이럴 경우 여러개의 예시를 들면 다음과 같은 결과가 나온다.

 

● QF → [Q] → [Q, F] → [T] (Q와 F가 T로 합쳐진다. 입력 순서대로 하되 조건이 겹칠 경우 합쳐지는것이 우선이다.) ● QEF → [Q] → [Q, E] → [Q, E, F] → [] (Q와 F가 상쇄를 발생시키기 때문에, F가 불려지는 순간 원소 리스트가 비워지게 된다 ● FQE → [Q] → [Q, F] → [T] → [T, E] (F와 Q가 T로 합쳐지고, 그 다음 E가 불러진다) ● RFQ → [R] → [R, F] → [R, F, Q] → [R, T] (F 와 Q가 T로 합쳐지게 된다.) ● QQF → [Q] → [Q, Q] → [Q, Q, F] → [Q, T] (두 번째 Q와 F가 T로 합쳐지게 되어, 첫 번째 Q와 F로 인한 상쇄가 발생되지 않게 된다) ● FAFBQ → [F] → [F, A] → [F, A, F] → [F, A, F, A] → [F, A, F, A, Q] → [] (첫 F와 Q가 상쇄를 발생시켜 원소리스트를 비워버린다. )

 

부르게 되는 원소들이 주어졌을 때, 이를 모두 부르게 될 경우 최종적으로 원소 리스트에 남는 원소들은 무엇인지 찾는 프로그램을 작성하라.


입력

입력은 한줄로 이뤄진다. 처음에는 조합이 가능한 원소들의 쌍의 개수 C(1≤C≤36 ) 이 입력된다. 그 다음에는 C개의 2개 "기본" 원소와 1개의 "비 기본"원소를 뜻하는 길이 3의 문자열이 입력되는데, 이는 첫번째 문자와 두번째 문자에 대응되는 기본 원소가 세번째 비 기본 원소로 합쳐짐을 뜻한다. 만약 QFT라고 입력되었을 경우 기본원소 Q와 F는 T라는 원소로 합쳐짐을 뜻한다. 다음에 상쇄되는 원소들의 쌍의 개수 D(1≤D≤28)이 입력된다. 그 다음에 D개의 2개의 문자 쌍이 입력되는데 각 문자들에 대응되는 기본 원소들이 서로 대응된다는 것을 의미한다. 마지막으로 부르게 되는 원소의 수 N(1≤N≤100 )과 길이 N의 문자열이 입력되며, 문자열의 순서대로 불러지게 되는 기본 원소들을 뜻한다.


출력

입력에 대해 다음과 같은 형태로 출력한다. [E1, E2, ..., EM] M은 최종적으로 원소 리스트에 남게 되는 원소들의 개수를 뜻하며, E1은 원소 리스트의 맨 앞의 원소이며, EN은 원소 리스트의 맨 뒤의 원소다. 만약 남는 원소가 하나도 없을 경우 []를 출력하며, 하나만 존재할 경우 [E1]와 같이 출력되야 한다. '['와 E1사이와 EM과 ']' 사이에는 공백이 존재해서는 안된다. 또한 , 를 출력한 다음 반드시 빈칸이 하나 존재해야 한다.


예제 #1

0 0 2 EA
[E, A]

예제 #2

1 QRI 0 4 RRQR
[R, I, R]</

예제 #3

1 QFT 1 QF 7 FAQFDFQ
[F, D, T]

예제 #4

1 EEZ 1 QE 7 QEEEERA
[Z, E, R, A]

예제 #5

0 1 QW 2 QW
[]
로그인해야 코드를 작성할 수 있어요.