Python/Python Challenge

[Python Challenge 3] "야 웃어 웃어"

Python Challenge 3의 url은 다음과 같다.

Python challenge 3 : http://www.pythonchallenge.com/pc/def/equality.html

 

re

 

www.pythonchallenge.com


구성

페이지 번역은 다음과 같다.

 

정확하게 세 개의 큰 보디가드를 양옆에 둔 하나의 작은 문자를 찾으시오

 

또다시 페이지 주석을 보자

또다시 많은 문자열들이 보인다. 설루션대로 문제의 풀이를 위해서는 정규표현식의 힘을 빌려야 될 거 같다. 

정규표현식이 무엇인지 모르는 사람은 아래를, Python에서 정규표현식 사용법은 그 아래를 참고하고 오도록 하자

2021.04.17 - [정보보안-이론] - 정규표현식에 대하여

 

정규표현식에 대하여

정규표현식은 여러 목적으로 사용된다. 정규표현식 자체는 어렵지 않다. 정규식(正規式)은 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어이다. < 정규표현식의 정의 : 출

tutoreducto.tistory.com

2021.04.19 - [개발/Python] - [Python] - 모듈탐구 re - [^정규표현식$?]

 

[Python] - 모듈탐구 re - [^정규표현식$?]

정규표현식을 모르고 있는 사람은 아래 포스팅을 읽고 오자 2021.04.17 - [정보보안-이론] - 정규표현식에 대하여 정규표현식에 대하여 정규표현식은 여러 목적으로 사용된다. 정규표현식 자체는

tutoreducto.tistory.com


해결 아이디어

이전문제와 동일하게 문자열은 3.dat에 저장하였으나, 개행 변환은 하지 않았다. 이번에는 개행 문자의 유무가 문제풀이에 영향이 갈 거 같았다. re모델을 통해 작성한 탐색용 정규표현식은 [A-Z]{3}[a-z]{1}[A-Z]{3}이다.

import re

if __name__=="__main__" :
  with open("3.dat","r") as f:
    data = f.read()

  answer = re.findall("[a-z][A-Z]{3}[a-z][A-Z]{3}[a-z]",data)

  for i in range(len(answer)) :
    print(answer[i][4],end="")

 

출력은 다음과 같았다.

>>> 
linkedlist

찾았다.

Answer Url : http://www.pythonchallenge.com/pc/def/linkedlist.html? 

 

힝 속았지! 페이지는 php에 있다고 한다 다음부터는 정적인 스크립트는 안쓸생각인가 보다

Answer Url : http://www.pythonchallenge.com/pc/def/linkedlist.php