바이킹 해커
면접 대비시간 제한1초메모리 제한1024 MB
이진 문자열을 4비트씩 나누고, 표에서 각 조각에 대응하는 문자를 찾아 출력합니다. 표에 없는 조각은 ?로 출력합니다.
문제
바이킹 전사들이 뛰어난 전사였다는 사실은 대부분 알고 있지만, 실력 있는 프로그래머이기도 했다는 사실은 덜 알려져 있다. 룬석 하나를 새기는 프로그램을 짜는 데는 많은 시간이 들었고, 실수할 여지도 거의 없었다. 안타깝게도 이 때문에 룬석은 거리낌 없이 활보하던 바이킹 해커들의 표적이 되기 쉬웠다.
당신은 문자 목록과 그 이진 표현이 담긴 참고표를 이용해 이 시대의 룬석 하나를 번역하는 임무를 맡았다. 바이킹에게는 고급 언어가 없었고, 코드를 0과 1로 직접 작성했다. 대부분의 룬석이 결국 해킹당했기 때문에 일부 코드가 잘못되었을 위험이 있다.
입력
첫 줄에는 문자의 개수 ()가 주어진다. 이어서 개의 줄이 주어지며, 각 줄에는 문자 하나(영문 소문자 a-z, 대문자, 숫자 중 하나)와 그 이진 표현이 차례로 주어진다. 이진 표현은 항상 길이가 4인 0과 1의 열이다. 마지막 줄에는 번역할 룬석을 나타내는 0과 1로 이루어진 길이 ()의 문자열이 주어진다. 은 4의 배수이다. 입력에는 같은 이진 표현을 가진 서로 다른 문자가 없다.
출력
번역 결과인 개의 문자를 한 줄에 출력한다. 올바르게 번역할 수 없는 부분에는 ?를 출력한다.
힌트
0100은 a로, 1000은 b로 번역된다는 것을 알 수 있다. 번역할 문자열 0100100000101000은 0100, 1000, 0010, 1000으로 나뉜다. 세 번째 부분만 번역할 수 없으므로 출력은 ab?b이다.