시간 제한
메모리 제한
시간 제한
2초
메모리 제한
128 MB
키를 사용해 평문을 암호문으로 바꾸는 다음 암호화 방식을 생각하자. 평문, 암호문, 키는 모두 공백 없이 영어 대문자로만 이루어진 문자열이다.
키의 길이를 N이라고 하자. 먼저 평문을 왼쪽부터 N글자씩 잘라 행으로 배치한다. 예를 들어 평문이 MEETMEBYTHEOLDOAKTREENTH이고 키가 BATBOY라면 다음과 같이 놓인다.
| B | A | T | B | O | Y |
|---|---|---|---|---|---|
| M | E | E | T | M | E |
| B | Y | T | H | E | O |
| L | D | O | A | K | T |
| R | E | E | N | T | H |
맨 윗줄의 키는 설명을 위한 것이다. 이제 각 열을 키 문자 기준으로 안정적으로 정렬한다. 즉 BATBOY의 열은 키 문자를 정렬한 ABBOTY 순서가 된다. 같은 문자가 여러 번 등장하면 원래 더 왼쪽에 있던 열이 먼저 온다.
| A | B | B | O | T | Y |
|---|---|---|---|---|---|
| E | M | T | M | E | E |
| Y | B | H | E | T | O |
| D | L | A | K | O | T |
| E | R | N | T | E | H |
위 예에서 두 개의 B 열 중 원래 더 왼쪽에 있던 열 (B)MBLR이 먼저 배치된다. 정렬된 행렬을 왼쪽 열부터, 같은 열 안에서는 위쪽 행부터 차례대로 읽으면 암호문이 된다. 따라서 이 예의 암호문은 EYDEMBLRTHANMEKTETOEEOTH이다.
키와 암호문이 주어졌을 때, 원래 평문을 구하는 프로그램을 작성하시오.
첫째 줄에 키가 주어진다. 둘째 줄에 암호문이 주어진다.
키와 암호문은 모두 영어 대문자로만 이루어져 있다. 암호문의 길이는 항상 키의 길이의 배수이다. 키의 길이는 10자 이하이고, 암호문의 길이는 100자 이하이다.
첫째 줄에 복원한 평문을 출력한다.