ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 0x04.Python Challenge 4
    0x.Wargame/Python Challenge 2017. 6. 7. 20:35

    0x04.Python Challenge 4

     

     

     

    문제 주소 : http://www.pythonchallenge.com/pc/def/linkedlist.php

     

     

     

    벌써 4번째 문제에 도전하게 되었다. 이번에는 어떨까나.

     


    이번에는 힌트도 없는 것 같다. 역시 소스코드를 뒤적여본다.

     

     

    소스코드를 보면 urllib를 사용하고 400번 정도가 적당하다고 하는걸로 보아 for문을 돌려서 푸는 문제인 듯하다. 또한 img src가 있는데 문제의 그림을 누르면 다음과 같은 화면이 뜬다.

     

    바로 소스코드에서 뜻하는 NOTHINGS가 5자리 숫자를 뜻하는 것 같다. 그리고 이 나띵은 소스코드의 주소 마지막 부분의 숫자를 뜻했다. 이제 문제 풀이는 다음과 같을 것이다.

     

    첫 번째로 소스코드의 문장을 읽어온다.

    다음은 소스코드의 문장에서 숫자를 뽑아낸다.

    뽑아낸 숫자를 바탕으로 for문을 통해 다음 url로 넘어간다.

    마지막 번호를 뽑아낸다.

     

     

    파이썬 2버전과 다르게 3버전에서는 urlopen을 사용하기 위해서는 urllib.request까지 임포트를 해야했다.

     

    위의 코드에서는 re.sub를 사용했는데 사용방법은 다음과 같다.

     

    re.sub('찾을 조건', '찾은 조건을 바꿀 조건', '찾는 위치')

     

    내가 만든 코드를 해석해보면 new_url의 문장에서 0-9가 아닌 모든 값들을 '' 처리 즉, 없애라는 것이다. 즉 no의 값을 최신화시켜주는 작업을 하는 것이다.저기서 중요한 것은 urllib.request.urlopen을 통해 불러온 문장은 바이너리 파일이기 때문에 str(new_url)과 같이 변형시켜줘야 오류가 발생하지 않는다.

     

    밑에 나오는 파란색의 결과는 출력 결과를 편집을 통해 종합을 한 것인데, for문이 반복되는 동안 중간중간 함정이 있었다. 그것들을 눈으로 확인을 해야만 마지막 값인 66831을 통해 peak라는 값을 알아낼 수 있다.

     

    '0x.Wargame > Python Challenge' 카테고리의 다른 글

    0x06.Python Challenge 6  (0) 2017.06.26
    0x05.Python Challenge 5  (0) 2017.06.08
    0x03.Python Challenge 3  (0) 2017.06.01
    0x02.Python Challenge 2  (0) 2017.05.09
    0x01.Python Challenge 1  (0) 2017.05.05

    댓글

Designed by Tistory.