[Python Challenge] 파이썬 챌린지 1

반응형


Python Challeng 문제풀이

* Python Challeng는 프로그래밍 언어인 파이썬 관련 문제입니다.

* 개인적인 문제풀이로 해답을 보시기 전에 직접 풀어보시기를 권해드립니다.

* 때로는 추가 모듈이 필요합니다. 모든 것은 인터넷에서 무료로 다운로드 할 수 있습니다.

[링크] 문제풀이 바로가기


[Python Challeng] 파이썬 챌린지 1

첫 화면을 보면 하나의 이미지와 두 문장이 있다.

노란색의 힌트를 보면 '모두는 이것을 해결하기 전에 두 번 생각합니다.' 라고 쓰여있는데 아직 무슨 소리이지 모르겠고 이미지에 집중을 해보자. K→M, O→Q, E→G 이렇게 글이 쓰여 있는데 언어를 조금 써봤다면 자연스럽게 '치환'이라는 단어가 떠오를 것이다. 무작정 치환을 하지는 않겠고 규칙을 찾아야하는데, 세가지의 알파벳 모두 2칸씩 밀려있는 것을 알 수 있다. 힌트 밑의 보라색으로 알파벳이 뒤죽박죽으로 섞여있는데 이 문장에 해답이 있을 것 같다. 이문장을 알파벳을 두 개씩 뒤로 미는 프로그래밍 코드를 짜보았다.

[소스 코드]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ex = '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'
sen=[]
for x in ex:
    x = ord(x)
    if x!=32 and chr(x).isalpha():
        if x>120:
            sen.append(chr(x-24))
        else:
            sen.append(chr(x+2))
    else:
        sen.append(chr(x))
for x in sen:
    print(x, end='')
cs
문자라도 아스키코드를 이용해서 모두 숫자로 변환할 수 있는 점을 이용해서 아스키코드 숫자+2를 해서 다시 문자로 저장하는 방식으로 코드를 짜보았다. 아스키코드에서 숫자로 1씩 올라가면 알파벳으로 따지면 1칸씩 뒤로 가기 때문

[결과]

1
2
3
4
i hope you didnt translate it by hand. thats what computers are for.
doing it in by hand is inefficient and thats why this text is so long.
using string.maketrans() is recommended. now apply on the url
>>> 

cs



구글 번역으로 돌리면 '나는 당신이 그것을 손으로 번역하지 않았기를 바랍니다. 그게 무슨 컴퓨터가 있습니다. 손으로 그것을하는 것은 비효율적이며 왜이 텍스트가 그렇게 긴지입니다. string.maketrans ()를 사용하는 것이 좋습니다. 이제 URL에 적용하십시오'

??? 아니.. 파이썬 공부하면서 저런 함수를 처음 보았다. 만약 알았다면 함수를 써서 한번에 문제를 풀었을텐데.. 덕분에 조금 더 어렵게 돌아갔다. URL에 적용하라고 하니 URL에 있는 map 이 다음 레벨로 넘어갈 수 있는 키 인듯 하다. 함수를 배운김에 함수를 이용하여 map을 2칸씩 뒤로 미루는 코드를 짜보았다.

[소스 코드]

1
2
3
4
5
6
import string
ex2 = 'map'
before = "abcdefghijklmnopqrstuvwxyz"
after = "cdefghijklmnopqrstuvwxyzab"
sen2 = ex2.maketrans(before, after)
print(ex2.translate(sen2))

cs

결과를 URL에 입력하면 다음 레벨로 넘어갈 수 있다! 혹시 나처럼 string.maketrans 함수를 모르는 분들을 위해 직접 포스팅 해야겠다. 

string.maketrans[링크 Click]

next Challenge URL : http://www.pythonchallenge.com/pc/def/ocr.html


반응형
TAGS.

Comments