반응형
출처) http://www.pythonchallenge.com/index.php
http://www.pythonchallenge.com/pc/def/peak.html
- 파이썬 챌린지 레벨5 문제!
- 이미지는 뭘 의미하는지 모르겠다. 밑에 "pronounce it"이라고 적혀있다. 발음......?
- 바로 페이지소스를 확인해보았다.
- 12번째 줄에 banner.p를 눌러 보니 또 다른 페이지가 나왔다.
- 세로로 적힌 알 수 없는 문자열들이 있다.
- 다시 페이지소스를 보니 맨 밑에 주석으로 "peak hell sounds familiar ?" 라고 적혀있다.
- peak hell과 유사한 발음나는 걸 찾으면 되는 것 같다.
- peak hell , peak hell sounds familiar 등 검색하다 보니 우연히 다른 사람이 풀이에 적어 놓은 pickle을 보게 되었다.
- 파이썬 모듈 중에 pickle모듈이 있는 것 같다. 사실 처음들어본다.......;;
pickle모듈은 파이썬 객체 구조의 직렬화와 역 직렬화를 위한 바이너리 프로토콜을 구현한다.
바이트로 저장하고 불러오는 방식이다.
pickling은 pickle.dump를 하여 자료형을 파일로 저장하는 방식이고,
unpickling은 pickle.load를 하여 pickling으로 작업한 파일을 불러서 출력하는 방식이다.
https://docs.python.org/ko/3.7/library/pickle.html
- banner.p페이지에 있는 문자열은 pickling된 형태이기 때문에 unpickling을 해야한다.
from urllib.request import urlopen
import pickle
file=urlopen("http://www.pythonchallenge.com/pc/def/banner.p")
data=pickle.load(file)
print(data)
- 코드를 실행하면 [그림.4]와 같이 출력된다.
- 무언가 규칙이 있는 것 같다.
- list[] 안에 ()가 들어 있는 것 같다. 리스트 안에 튜플을 사용한 것 같다.
- 첫번째를 보면 [ ]가 이중으로 되어있다. 그리고 ' '공백이 95번 나오는 것 같다.
- 옆을 보면 [ ]가 하나이고, 괄호 속에 여러가지 적혀 있다. 아마 [ ]가 문장을 나누는 것 같다.
- 첫번째 문장은 공백이 95번 그 다음 줄은 공백이 14번, #이 5번 그리고 공백이 70번, #이 5번, 공백이 1번....?
- 이걸 합쳐보면 될 것 같다.
from urllib.request import urlopen
import pickle
file=urlopen("http://www.pythonchallenge.com/pc/def/banner.p")
data=pickle.load(file)
for i in data:
result=""
for char, num in i:
result += char * num
print(result)
- for문안에서 char(' ', #), num(95,14...) 이걸 문자형을 숫자 만큼 합쳐서 출력을 하면 무언가 나올 것 같다.
답 : channel
http://www.pythonchallenge.com/pc/def/channel.html 로 가면 다음 레벨이 나온다.
반응형
'#WarGame > Python Challenge' 카테고리의 다른 글
Python Challenge # LV.7 (픽셀 문자열) (0) | 2020.08.27 |
---|---|
Python Challenge # LV.6 (ZipFile) (0) | 2020.08.24 |
Python Challenge # LV.4 (0) | 2020.08.18 |
Python Challenge # LV.3 (0) | 2020.08.17 |
Python Challenge # LV.2 (0) | 2020.08.17 |