오토키 암호의 암호문과 비밀 단어가 주어질 때 원래 평문 메시지를 복원한다.
쉬움3문자열구현아직 제출이 없습니다시간 제한2초메모리 제한512 MB"SEND MORE MONKEYS" 같은 일급 비밀 메시지를 암호화해야 한다고 하자. 알파벳 한 글자를 다른 글자로 바꾸는 단순 치환 암호를 쓸 수도 있지만, 이런 암호는 쉽게 깨진다. E, S, A처럼 자주 나오는 글자가 있고 Q, Z, X처럼 드물게 나오는 글자가 있기 때문이다. 글자마다 치환 방식을 다르게 하면 더 안전해진다. 자동 키 암호(autokey cipher)가 그런 방식이다.
메시지를 암호화하려면 먼저 비밀 단어를 하나 고른다. 예를 들어 "ACM"을 고른 다음 메시지 앞에 붙인다. 이렇게 길어진 문자열을 메시지 길이만큼 잘라낸 것이 키이고, 키의 n번째 글자로 원문의 n번째 글자를 암호화한다. 키의 각 글자는 순환 자리 이동량을 뜻한다. A는 0칸, B는 1칸, 이런 식이다. 비밀 단어가 "ACM"이면 메시지는 다음과 같이 암호화된다.
SENDMOREMONKEYS (메시지)
ACMSENDMOREMONK (키)
------------------------------
SGZVQBUQAFRWSLC (암호문)
원문의 E는 처음 나왔을 때 대응하는 키 글자가 C라서 2칸 밀려 G가 되었고, 그다음 두 번은 각각 Q와 S가 되었다.
암호문과 비밀 단어가 주어지면 원래 메시지를 구하라.
입력은 두 줄이다. 첫째 줄에 암호문이 주어지고, 둘째 줄에 비밀 단어가 주어진다. 두 줄 모두 대문자 알파벳으로만 이루어져 있다. 비밀 단어가 암호문보다 길거나 같으면, 키는 비밀 단어의 앞부분을 암호문 길이만큼 자른 것이다.
주어진 비밀 단어로 주어진 암호문을 만들어낸 원래 메시지를 출력한다.