[Python Challenge] 파이썬 챌린지 2

반응형


Python Challeng 문제풀이

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

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

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

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


[Python Challeng] 파이썬 챌린지 2

[문제 살펴 보기]

첫 화면을 보면 하나의 이미지와 힌트가 있다.

힌트를 번역하면 '문자를 알아 보자. 어쩌면 그들은 책에있다. 하지만 그들은 페이지 소스에있을 수 있습니다.' 그들은 다음 레벨에 대한 키일테고, 키가 페이지 소스에 있다는 것 같다. 오른쪽마우스를 클릭해서 페이지 소스보기를 누르면 다음과 같은 화면을 볼 수 있다.

주석으로 써놓은 문자들이 눈에 가는데 '아래 엉망으로 희귀 한 문자를 찾으십시오.' 즉, 복잡한 문자열 속에 암호가 숨겨져 있는 것 같다.


[문제 풀이]

문자열을 찾으려면 일단 저 수많은 문자들을 긁어와야 하는데 그냥 복사 붙여넣기 하면 줄마다 개행문자가 들어가 있어 여간 번거로운게 아니다. 하지만 프로그래밍에 쓰려면 저 문자열들을 꼭 가져와야 한다. 그럴때 2가지의 방법이 있는데 한가지는 모듈을 사용하여 url을 긁어와 사용하는 것과 메모장에 저장하여 open 함수로 읽어들이는 것이다. 모듈을 사용하려면 urllib, urllib2, requests, ... 등 여러가지의 파이썬 모듈이 있지만 모듈을 따로 설치해야 하고 오히려 이런 문제에서는 번거로울 수 있으므로 메모장에 저장해서 사용하는 법을 택하겠다. 메모장을 키고 아래와 같이 문자열들을 긁어와 저장해준다.



이제 코드를 짜야하는데 문자열을 거르는 방법은 다음과 같이 2가지가 있다.

  • 입력값 검증을 이용한 방법
  • 정규표현식을 이용한 방법

두 가지 방법을 모두 사용해 코드를 만들어 보겠다.

[소스 코드]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
txt = open('level2.txt''r')
data = txt.read()
 
#입력값검증으로 풀이
#str.isalpha() 는 문자열이 영어로 구성되어 있으면 참, 아니면 거짓을 출력한다.
answer = ''
 
for i in data:
    if i.isalpha():
        answer += i
 
print(answer)
        
#정규표현식으로 풀이
#regular expression 모듈 사용
import re
 
answer2 = re.findall("[A-Za-z]", data)
print(answer2)
cs

[결과]

1
2
3
equality
['e''q''u''a''l''i''t''y']
>>> 
cs

2가지의 방식으로 문제를 풀어봤는데 각각의 장단점이 있는 것 같다. 개인적으로 세밀한 답을 찾아낼수록 정규표현식이 더 좋을 수는 있을 것 같다.

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

반응형
TAGS.

Comments