암호 깨기 (Crypt Kicker)

Programming/Algorithm 2010. 9. 30. 19:07

텍스트를 암호화하는 방법 중에 보안상 취약하긴 하지만 흔하게 쓰이는 방법으로 알파벳 글자를 다른 글자로 돌리는 방법이 있다. 즉 알파벳의 각 글자를 다른 글자로 치환한다. 암호화된 것을 다시 원래대로 되돌릴 수 있으려면 두 개의 서로 다른 글자가 같은 글자로 치환되지 않아야 한다.

암호화된 텍스트가 한 줄 이상 입력되는데, 각 줄마다 서로 다른 치환 방법이 적용된다고 가정하자.
암호화 이전의 텍스트에 있는 단어는 모두 주어진 사전에 들어있는 단어라고 가정하고, 암호화된 텍스트를 해독하여 원래 텍스트를 알아내자.

입력

입력은 한 개의 정수 n이 들어있는 행으로 시작되며 그 다음 줄부터는 한 줄에 하나씩 n개의 소문자로 쓰인 단어들이 알파벳 순으로 입력된다. 이 n개의 단어들은 복호화된 텍스트에 들어갈 수 있는 단어로 구성된 사전이다. 사전 뒤에는 몇 줄의 텍스트가 입력된다. 각 줄은 앞에서 설명했던 방법에 따라 암호화된다.

사전에 들어갈 수 있는 단어의 개수는 1,000개를 넘지 않는다. 단어의 길이는 16글자를 넘지 않는다. 암호화된 텍스트에는 소문자와 스페이스만 들어가며 한 줄의 길이는 80글자를 넘어가지 않는다.

출력

각 줄을 복호화하여 표준 출력으로 출력한다. 여러 문장으로 복호화될 수 있다면 그 중 아무 결과나 출력하면 된다. 가능한 풀이가 없다면 알파벳 모든 문자를 *로 바꾼다.

입력 예
6
and
dick
jane
puff
spot
yertle
bjvg xsb hxsn  xsb   qymm   xsb rqat     xsb   pnetfn
xxxx yyy zzzz www  yyyy    aaa bbbb   ccc   dddddd

출력 예
dick and jane and puff and spot and yertle
**** *** **** *** **** *** **** *** ******

문자열을 저장할때 error C2106 : '=' : 왼쪽 피연산자는 l-value이어야 합니다. 오류가 뜰경우
> strcpy를 이용하라.

1.글자수가 사전 단어, 암호화된 텍스트 양쪽 다 유일할때는 반드시 그 단어로 치환 되어야 합니다
2.암호화된 텍스트에 있는 글자수가 사전에 없다면 복호화가 불가능 합니다.(* 표시해야함)
3.2개 이상 존재하는 단어들은 1번 과정에서 복호화된 문자들부터 하나씩 처리해나가도록 합시다...

 



'Programming > Algorithm' 카테고리의 다른 글

ACM-ICPC 2010년도 O.T. 문제 1 - Ducci Sequence  (0) 2010.10.04
ACM-ICPC 2009년도 기출 _ Candy War  (0) 2010.10.01
동맹 휴업 (Hartal)  (0) 2010.09.03
포커 패(Poker Hands)  (0) 2010.09.01
유쾌한 점퍼(Jolly Jumpers)  (0) 2010.08.31