[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
'War Game > python challenge' 카테고리의 다른 글
[Python Challenge] 파이썬 챌린지 3 (0) | 2017.07.20 |
---|---|
[Python Challenge] 파이썬 챌린지 1 (0) | 2017.07.14 |
[Python Challenge] 파이썬 챌린지 0 (0) | 2017.07.13 |