본문 바로가기
스터디/wargames

파이썬 문제풀이, The Python Challenge Level2 문제풀이

by 깝태 2013. 9. 12.





이번에는 위와 같은 사진이 있습니다. 힌트로는 다음의 메세지가 있습니다.


everybody thinks twice before solving this.


g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj.


일단 K -> M, O -> Q, E -> G로 모두 두 번씩 이동을 하는데 위의 메세지를 보고 확인해보니깐 M, Q, G 로

치환이 된 상태에서 또 두 칸씩 뛰면 그때부터 아래의 이상한 메세지가 정상적인 메세지를 뜨기 시작합니다.

그래서 처음에는 하나하나 손으로 해볼까 생각하다가 한번 모듈이나 함수를 있을까 해서 검색해봤습니다.

(후회 중....)


검색해보니깐 string 모듈에 문자열 치환 관련 함수가 있었습니다.


1. maketrans(x, y, z)


x인자는 원본문자이며 y인자는 치환될 문자로 x 와 길이가 같아야 합니다.

z인자는 공백으로 치환해줄 특정문자입니다.


2. translate()


위 함수로 치환을 시도합니다.


바로 문제풀이 과정에 주석을 달아 문제풀이를 보여드리도록 하겠습니다.


>>> import string

>>> str = "g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp.

bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. sqgle qr

pgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj."

# 힌트로 제공된 문자입니다.


>>> file = str.maketrans("abcdefghijklmnopqrstuvwxyz", "cdefghijklmnopqrstuvwxyzab")

# 첫 번째 인자가 치환될 문자열이고 두 번째 인자가 치환된 문자열입니다.


>>> data = str.translate(file)

# translate 함수를 이용해 치환을 시도합니다.


>>> data

"i hope you didnt translate it by hand. thats what computers are for. doing it in by hand is inefficient and that's why this text is so long. using string.maketrans() is recommended. now apply on the url."

# 치환이 되었습니다.


역시나 string.maketrans() 를 사용하라는 메세지가 있네요,

이제 지금 URL 에 적용해보라는 마지막 메세지가 있습니다. 그래서 시도해보면


map -> ocr


로 치환이 되고 문제 풀이에 성공했습니다.