2. 문제 설명
6
and
dick
jane
puff
spot
yertle
bjvg xsb hxsn xsb qymm xsb rqat xsb pnetfn
dick and jane and puff and spot and yertle
3. • 암호를 복호화 할 수 있는 테이블을 만들어야 한다.
• 주어진 데이터가 하나도 없으므로, 하나씩 넣어보는
수밖에 없다.
• 그렇지만 암호화 + 복호화 모두 가능해야 하므로
테이블에서 하나의 알파벳은 하나의 알파벳으로만
대응가능한 사전 형태로 만들수 있다.
4. • 암호를 복호화 할 수 있는 테이블을 만들어야 한다
• >> mappingDict = dict()
5. 정상 조건을 검사하는 방법은
매핑 테이블에 대입 했을때
암호 한 글자에 복호화된
글자 하나가 매핑 가능 하면
된다.
• 주어진 데이터가 하나도 없으므로, 하나씩 넣어보는
수밖에 없다.
bjvg = dick hxsn = jane qymm = puff
bjvg = jane hxsn = puff qymm = spot
hxsn = spot qymm = yertle
6. • 주어진 데이터가 하나도 없으므로, 하나씩 넣어보는
수밖에 없다는것을 깨달음
hxsn = jane qymm = puff End!
hxsn = puff qymm = spot
hxsn = spot qymm = yertle
모든 암호를 제대로 복호화 할 수
있으면 올바른 매핑
테이블이라고 할 수 있음. 따라서
종료 조건에 도달 했을 때의
테이블이 정답.
7. • 암호화 + 복호화 모두 가능해야 하므로 테이블에서 하나의
알파벳은 하나의 알파벳으로만 대응가능한 사전 형태로
만들수 있다.
8. def main():
strresult = "*"
retval = None
edword = ed.pop()
retval = decode(edword)
if retval == False:
print strresult
else:
for edword in ed_:
print decodewords(mapping,edword)
main()
9. def decode(edword):
if len(ed) == 0:
wordmapping(mapping, rd[0], edword)
print 'touch end -- ed is empty'
print mapping
return True
for rdword in rd:
if wordmapping(mapping, rdword, edword) == True:
rd.remove(rdword)
newedword = ed.pop()
result = decode(newedword)
if result == False:
ed.append(newedword)
rd.append(rdword)
else:
return True
return False