풀이에 그렇게 오래걸리는 문제는 아니다. 감각적인 사람이라면 단서들을 종합하면서 어떻게 풀지 떠올릴 수 있을 것이다. 다만 얼마나 빨리 풀 수 있을진 의문이다 ㅋㅋ 카이사르 시저의 암호가 단서가 될 수 있단걸 알지만 애초에 시저 암호를 아는 사람이라면 이 문제를 못 풀리 없단 것도 자명하다. 그래도 관련 링크는 스포일러가 될 수 있으니 나중에 정답지에 다같이 올리도록 하겠다.
Level 0 에서는 그림 안의 단서가 굉장히 직관적으로 다가왔었고 중요했다. 이번에도 그럴 것이라고 생각해서 그림을 찬찬히 뜯어보는 것부터 시작했다. 배경은 잡초들이 잘 뿌려져있고 중간엔 메모지가 있다. 그리고 직관적으로 와닿지 않는 알파벳들이 연결지어져 있다. 아래에는 의미를 알 수 있는 문장과 파악되지 않는 문장이 하나씩 있다.
이걸 어떻게 해결할까나...
0단계. 문제 해독
everybody thinks twice before solving this. ( 이 문제를 풀기 위해 두 번씩 생각하게 된다. )
이 문장이 무슨 힌트가 될지 고민하다가 포기하고 일단 사진부터 해독하기로 했다. 아래 문장도 해독해야하는데 둘을 동시에 놓고 유심히 살펴보다가 잘 모르겠으니 시키는대로 K를 M으로, O를 Q로, E를 G로 바꿔서 읽어보기로 했다. 그래도 읽을 수 있는 문장이 되진 않더라. 근데 바꾸다보니 알파벳 순서상 K L M / O P Q / E F G 와 같이 사진의 문자들 사이 거리가 똑같다는걸 알게 되었다. 그래서 문장의 모든 단어를 2씩 옮겨보기로 하고 처음 두 단어를 옮겨보니 i hope가 나오길래 무릎을 탁쳤다. ㅎㅎ
그제서야 생각났다. 정식 명칭이 떠오르진 않았지만 알파벳을 몇 칸씩 옮겨쓰는 방식의 암호화 방식이 기억나더라. 찾아보니 ( Link ) 이름이 시저 암호 ( Link ) 라더라. 2칸씩 떨어진 시저 암호임을 알아냈으니 푸는 방법도 간단해질(...) 줄 알았으나 코딩하려고보니 생각보다 복잡하긴 했다. 워낙 유명하니까 암호화랑 복호화 과정을 이미 제공하는 페이지 ( Link ) 가 있더라. 옮기는 숫자가 기본 3으로 돼 있는데 2로 정해놓고 저 분홍색 문장을 옮겨적으면 잘 번역해준다.
1단계. 실마리 찾기
파이썬 언어로 해석하는걸 알아보자. 우선 분홍 문장을 1text.txt로 저장시켜뒀다. 그러곤 동일 디렉토리에 1sol.py 라는 파일을 만들어서 1text.txt 문장을 불러들였다.
2줄의 lst 의 경우 string 모듈 안의 lower_case 를 불러와도 되긴 할텐데 생각이 나지 않아서 수동 입력해줬다. 저렇게 입력한 문자열을 리스트로 변형하면 한 칸에 문자 하나씩 들어가게 된다. 리스트에 하나씩 집어넣는건 굉장히 귀찮기 떄문에 문자열 입력후 리스트로 바꾼 것이다. 4줄의 경우도 사실 불필요하긴 하다. 어차피 한 줄밖에 없는 파일을 읽기 때문이다.
핵심 알고리즘은 7~10줄, 그중에서도 8줄에 있다. lst의 원소들이 가진 index를 찾아서 2칸씩 옮기는 연산을 시킨 것이다. 조금 꼼수를 부린 것은 len(lst)를 빼준 것인데 파이썬 리스트 원소를 부를 때 음수로 된 인덱스를 주면 뒤에서부터 순차적으로 찾게 된다. 따라서 26칸 밖에 없는 lst에서 27번째 원소를 불러들이는 명령어를 써서 error를 일으키기보단 아예 음수 인덱스로 전부 바꿔버려서 제대로 가져오게 만들었다.