마법 카드
면접 대비시간 제한3초메모리 제한2048 MB
N 이하의 수가 적힌 K장의 카드와 각 친구의 Y/N 답변이 주어질 때, 친구가 고른 수를 찾습니다. 유일하지 않으면 0을 출력합니다.
문제
찬수와 준수는 International College of Programming Convergence의 친구이다. 어느 날 찬수가 준수를 만나 말했다. "내가 마술을 보여 줄게. 부터 사이의 수 하나를 골라서 나에게 말하지 말고 마음속에만 간직해." 준수는 마음속으로 을 골랐다. 찬수는 준수에게 카드 네 장을 한 장씩 보여 주며 매번 "네 수가 이 카드에 있니?"라고 물었다.
준수는 "예, 예, 아니오, 예" 순서로 대답했다. 찬수는 한동안 팔과 다리를 이리저리 움직이며 요란한 몸짓을 하더니 마침내 외쳤다. "네 수를 알았다. 이다." 준수가 마음속에 둔 수와 정확히 같아서 준수는 깜짝 놀랐다. 찬수는 마술의 비밀을 밝히지 않았다. 그저 "이 카드들은 엄청난 마법의 힘이 있어서 네 마음을 읽고, 나만 알아들을 수 있는 마법의 언어로 그 내용을 나에게 알려 준다"라고만 했다. 이 마술은 어떻게 가능할까? 비밀을 알아낼 수 있겠는가? 이제 친구들이 마음속에 둔 수를 알아내는 프로그램을 작성하라. 이 마술은 다음과 같이 일반화할 수 있다. 장의 마법 카드가 있고, 각 카드에는 이상 이하의 정수 개가 적혀 있으며 같은 수가 중복될 수도 있다. 이 마술을 명의 친구에게 시행한다. 명의 예/아니오 답변으로부터 올바른 수를 골라낸다.
입력
첫 줄에 네 정수 , , , 가 주어진다 (, , , ). 이어지는 개의 줄에는 각 마법 카드에 적힌 이상 이하의 정수 개가 주어진다. 이어지는 개의 줄에는 Y와 N으로만 이루어진 길이 의 문자열이 주어진다. Y는 예, N은 아니오를 뜻한다. 모든 답변은 친구가 마음속에 둔 수에 맞게 올바르게 주어진다고 가정한다.
출력
개의 줄을 출력한다. 번째 줄에는 번째 친구가 마음속에 둔 수를 출력한다. 그 수를 하나로 특정할 수 없으면 0을 출력한다.