About CryptKicker2 ¶
텍스트를 암호화하는 방법 중에 보안상 취약하긴 하지만 흔하게 쓰이는 방법으로 알파벳 글자를 다른 글자로 바꾸는 방법이 있다. 즉 알파벳의 각 글자가 다른 글자로 치환된다. 암호화된 것을 다시 원래대로 되돌릴 수 있으려면 두 개의 서로 다른 글자가 같은 글자로 치환되지 않아야 한다.
알려진 평문 공격법(known plain text attack)이라는 강력한 암호 분석 방법이 있다. 알려진 평문 공격법은 상대방이 암호화했다는 것을 알고 있는 구문이나 문장을 바탕으로 암호화된 텍스트를 관찰해서 인코딩 방법을 유추하는 방법이다.
여러 줄의 텍스트가 주어졌을 때 같은 케이스에서는 모든 줄에서 같은 치환 방법을 사용한다고 가정하고 그 중 한 줄은 the quick brown fox jumps over the lazy dog라는 평문을 암호화한 것이라는 점을 이용해서 암호화된 텍스트를 복호화하라.
Input ¶
첫번째 줄에는 양의 정수 하나만 들어있는데, 이 정수는 테스트 케이스의 개수를 나타낸다. 그 다음 줄은 빈 줄이다. 서로 다른 테스트 케이스는 빈 줄로 구분된다.
각 케이스는 여러 줄로 구성되는데, 앞에서 설명한 방법에 따라 암호화된 텍스트다. 암호화된 내용은 소문자와 스페이스만으로 구성되며 길이는 최대 80문자로 제한된다. 입력되는 텍스트는 100줄로 제한된다.
Output ¶
각 테스트 케이스에 대해 각 줄을 복호화하여 표준 출력으로 출력한다. 가능한 암호화 방법이 두 개 이상있으면 그 중 아무 결과나 출력해도 된다. 복호화할 수 없는 경우에는 다음과 같은 결과를 출력한다.
~cpp No solution.서로 다른 케이스 사이에는 빈 줄을 한 개 집어넣는다.
Sample Input ¶
~cpp 1 vtz ud xnm xugm itr pyy jttk gmv xt otgm xt xnm puk ti xnm fprxq xnm ceuob lrtzv ita hegfd tsmr xnm ypwq ktj frtjrpgguvj otvxmdxd prm iev prmvx xnmq
Sample Output ¶
~cpp now is the time for all good men to come to the aid of the party the quick brown fox jumps over the lazy dog programming contests are fun arent they