본문 바로가기

[+] Information/[-] Python

level 3

문제 URL : http://www.pythonchallenge.com/pc/def/equality.html

위 주소로 접속하면 아래와 같은 문제가 나온다.


대충 의역하면 3개의 보디가드가 둘러쌓고 있는 편지?! 뭐 이런식인데..

소스를 보니 아까와 다르게 엄청난 알파벳들이 있다.

자세히 보면 문제의 의미를 알 수 있다.

aGFTlBSFs 이런식으로 되어있는 부분이 있는데 이 구조를 정규식으로 표현하여 이 부분들만을 추출하면 문제는 풀린다.

표현할 구조가 소문자1 대문자3 소문자1 대문자3 소문자1 이런식인데 python 정규식을 보면 {숫자}라는 메타가 있다.

[a-z]{2} 라는 정규식을 만들어 함수에 적용하면 a-z를 두번 찾는다.

이걸 이용하여 정규식을 만들면

1. [a-z] --> 소문자 1
2. [a-z][A-Z] --> 소문자1 대문자1
3. [a-z][A-Z]{3} --> 소문자1 대문자3
4. [a-z][A-Z]{3}[a-z] --> 소문자1 대문자3 소문자1
5. [a-z][A-Z]{3}[a-z][A-Z] --> 소문자1 대문자3 소문자1 대문자1
6. [a-z][A-Z]{3}[a-z][A-Z]{3} --> 소문자1 대문자3 소문자1 대문자3
7. [a-z][A-Z]{3}[a-z][A-Z]{3}[a-z] --> 소문자1 대문자3 소문자1 대문자3 소문자1

이런식으로 해서 결과적으로 [a-z][A-Z]{3}[a-z][A-Z]{3}[a-z] 이런 정규식이 만들어진다.

여기서 search나 match되는 개체를 리턴 받으려면 ()를 해줘야 하므로 가운데에 있는 소문자 정규식을 ()처리 해주면 함수에 적용할수 있는 정규식이 완성된다.

아래는 소스와 결과물이다.


'[+] Information > [-] Python' 카테고리의 다른 글

Python과 Eclipse 연동하기  (0) 2012.08.07
level 4  (0) 2011.10.23
level 2  (0) 2011.10.23
level 1  (0) 2011.10.23