전주 듣고 노래 맞히기
시간 제한1초메모리 제한1024 MB
저장된 노래들의 처음 일곱 음을 바탕으로, 세 음이 주어지면 그 음으로 시작하는 곡 제목을 출력합니다. 여러 곡이면 ?, 없으면 !를 출력합니다.
문제
윤수와 정환은 「전주 듣고 노래 맞히기」라는 게임을 할 예정이다. 이 게임에서는 주어진 노래의 전주를 듣고 먼저 제목을 맞힌 사람이 점수를 얻는다. 최종적으로 점수가 더 많은 사람이 이긴다.
윤수는 절대 음감을 가져서 노래의 첫 네 음만 듣고도 어떤 노래든 맞힐 수 있다. 그래서 정환은 윤수를 이기기 위해 첫 세 음만으로 노래를 맞히는 프로그램을 만들려고 한다. 그는 먼저 자신이 알고 있는 노래 제목과 음이름 등을 데이터로 만든 뒤 프로그램 구현을 시작했다. 예를 들어 다음은 TwinkleStar(반짝반짝 작은 별)의 악보 중 일부이다.
``
박자를 무시하고 음이름으로 표현하면 위 악보는 CCGGAAG가 된다.
윤수를 이기려면 이 프로그램이 첫 세 음인 CCG만으로 노래 제목 TwinkleStar를 출력할 수 있어야 한다. 세상의 모든 노래를 아는 윤수와 달리 정환은 음을 아는 노래가 개뿐이다. 그래서 그 개 노래의 정보를 프로그램에 저장해 둘 것이다. 저장된 노래 중 입력된 첫 세 음으로 시작하는 노래가 여러 개여서 어떤 노래인지 정확히 알 수 없으면 ?를 출력한다. 입력된 첫 세 음에 맞는 저장된 노래가 없으면 !를 출력한다.
정환을 도와 첫 세 음만으로 정환이 음을 아는 노래를 맞히는 프로그램을 완성하자. 이 프로그램은 대문자와 소문자를 구분한다.
입력
첫 번째 줄에 정환이 음을 아는 노래의 개수 과 정환이 맞히기를 시도할 노래의 개수 이 공백으로 구분되어 주어진다.
두 번째 줄부터 개의 줄에 걸쳐 노래 제목의 길이 , 영어 대소문자로 이루어진 노래 제목 , 그 노래에서 처음 등장하는 일곱 개의 음이름 이 공백으로 구분되어 주어진다.
번째 줄부터 개의 줄에 걸쳐 정환이 맞히기를 시도할 노래의 첫 세 음의 음이름 이 공백으로 구분되어 주어진다.
음이름은 C, D, E, F, G, A, B 중 하나이다. 같은 제목이 두 번 이상 주어지지 않는다.
출력
정환이 맞히기를 시도하는 노래마다 한 줄에 하나씩 출력한다. 저장된 노래 중 첫 세 음이 같은 노래가 하나만 있으면 그 제목을, 두 개 이상이면 ?를, 없으면 !를 출력한다.
제한
- 입력으로 주어지는 모든 수는 정수이다.