4번 문제또한
새로운 문법을 공부할 수 있는 좋은(?) 계기가.. 되었다.

문제 화면이다.




(4번 문제 화면)




(사진을 클릭한 화면)



44827을 url 끝에 입력하고 들어가니 비슷한 패턴의 숫자가 또 나와서
입력하였다.

세번째(?) 인가..



(손이 아플꺼야 화면)



정확히 이게 맞나 싶은 생각이 들때
이 문구가 나왔다.

이런식으로 계속 들어가야 정답이 나오는데
손으로는 힘들겠다.. 라는 생각이 들었다.

새로운 방법이 필요했고
파이썬에서 제공하는 url 관련 기능을 이용하기로 했다.




(파이썬 문서 참조)



여기 에 있는 것들 중에 urllib.request를 사용할 것이다.

먼저 url 내용을 가져오는 작업을 (실험? 을 통해) 하였다.




(문구가 나오는 화면)



내용을 가져오는 것은 read() 인것 같다.
이 내용을 보니 byte 형식이길래
decode를 해야겠다고 생각이 들었고

decode를 하였다.



(decode 화면)



decode 한 순간
내용이 사라졌다..
이 문제로 굉장히 난감하고 힘든 나날들을 보냈다.

데이터 내용을 접근만 하면 사라져서..

그리고 해결책을 찾아냈다.
urlopen으로 바로 여는게 아니라 그렇게 하면 안됬다.
request.Request로 얻어온 내용으로 open을 하고 그 내용을 read로 읽어 들인 후
decode를 하면 내용을 뽑아 올 수 있었다.

문서를 찾은것이라기보다 이것저것 노가다의 시도 끝에...



(24번째가 숫자이다.)



(뒤에 입력해야할 값을 뽑아냈다.)



이제 뒤에 입력할 내용까지 뽑아내는데 성공했다.

이제 이 값을 url주소에 입력하면서 반복적인 작업을 해줘야한다.

while 문으로 코드의 길이가 없으면 중지되게 계속 반복문을 돌렸다.



(처음 시도)



(결과화면)



아.. 3번째는 팔아프다는 어쩌구 문구 때문에 24번째가 아니었다.

고민없이 뒤에 94485를 수동으로 입력 후 다시 진행



(다른 문구)



2를 나누어서 다시 계속 진행하라고 했다.

음.. 16044를 2 나누어서 8022로 다시 진행




(8022 다시 진행)



(이번엔 또 다른...)



뭔가 착오가 있다고 나왔다.

일단 지금까지 규칙대로 nothing 뒤에 있는 저 숫자
63579를 입력했다.



(63579 입력)



(??! 정답?)



마지막에
peak.html이 나왔다.

내가 보던 정답 유형과 비슷해서 정답이라는게 느껴졌다.



(정답 입력)



(정답!)



정답이다.! :)

뒷걸음치다 소잡은 느낌이긴 하지만..

url 파이썬을 공부하게 된.. 계기가 되었다.

4번 해결..!



'WarGame > Python Challenge' 카테고리의 다른 글

Python Challenge - 5  (0) 2017.01.18
Python Challenge - 3번  (0) 2017.01.02
Python Challenge - 2  (0) 2017.01.01
Python Challenge - 1  (0) 2017.01.01

파이썬 챌린지 2번째 문제화면이다.


(2번째 문제)




글자를 맞춰보세요...
책에 있을 수도 있고, 페이지소스에 있을 수도 있고~

음... 저 책 이미지를 데이터처리해서 알아내라는건지 싶었지만 모르기도하고.. 어려우니까
다음..!

페이지소스에 있을 수도 있다라.!




(페이지소스)




페이지 소스에 들어가봤다.





(페이지 소스)


역시나!!
예상은 했지만! 주석처리로 문제가 나와있다.

위에 이렇게 써있다.
아래 데이터중에 가장 드문(rare) 문자들을 확인해보세요.
아.! 그러면 이 문자열들을 하나씩 검사해서
횟수를 카운트하면 되겠군!

두 개의 리스트를 써서 문자가 들어오면 한 리스트에 추가 할 것이다.
추가할 때 카운트 리스트에도 값을 1이라고 해서 추가할 것이다.

그 다음에 중복되는 문자가 오면 그 리스트에서 그 문자가 들어있는 인덱스를 찾아서
카운트 인덱스에 있는 숫자를 수정해줄것이다.
-> data 전체에서 그 문자를 카운트할 수 있는 메서드로
(사실 이 메서드는 인덱스를 찾는 메서드를 찾기위해 API를 보다가 얻어 걸린거다.)
(원래 하나씩 증가시켜주려고 했다.)





(코드)



실행 시켜서 위 소스코드에 있는 마구잡이 데이터를 복사해서 입력해주면 끝이다!





(입력하는 모습)




?? 불길한 빨간글자는.. 

일단 입력해보자.




(입력 결과)



아....
빨간색 글씨는 주석처리 된거구나... (이때까지 몰랐다.)
왠지
저 카운트된 숫자들도 보니 말도 안되는 숫자고..(너무작다.)

입력이 주석처리되다니..ㅜ
(보안책에서 SQL 인젝션이라고 개념을 본적있는데, 그게 떠올랐다.)

여기서 한참 방황했다. 저 #들을 어떻게 처리해 주어야할까...
그 때 든 생각이 파일로 통째로 해서 입력하는게 어떨까 싶었다.

메모장을 키고 데이터들을 복사해서 붙여넣었다.





(메모장 파일 새성)


이 파일을 받아서 문자열로 옮긴 후 내가 생각했던대로
코드를 돌려볼 생각이다.




(코드 수정)




(결과)


오.....!!!!!!

( 공백도 문자다.)

적은 문자들을 보니 1이다. 이건 분명 적다고 할 수 있는 값이다.
equality 
가 정답이다.! :)

문제 1에서 했던것 처럼 url의 값을 변경해주었다.




(통과된 모습)




문제 2도.! 해결하였다.

: ) (뿌듯)

'WarGame > Python Challenge' 카테고리의 다른 글

Python Challenge - 5  (0) 2017.01.18
Python Challenge - 4번  (0) 2017.01.09
Python Challenge - 3번  (0) 2017.01.02
Python Challenge - 1  (0) 2017.01.01

재밌는 퀴즈(?) 같은 사이트다.
Python Challenge

0번 문제는 너무 쉬워서 패스하겠다.

1번부터 보면 아래 화면이 나온다.




K -> M
O -> Q
E -> G

알파벳을 쭉 써보고 위 세개의 규칙을 넣어보면
두칸씩 땡긴것을 확인 할 수 있다.

즉, 나머지 알파벳도 두칸씩 땡겨서 아래 분홍색 글씨를 해석하면 되는 것이다.

우선 이름이 Python Challenge인것 만큼 파이썬으로 코드를 작성해 보았다.

먼저 위 분홍색 글들은 소문자로 a 부터 z까지 범위를 보니 97부터 122였다.
유니코드 기준으로 (파이써는 유니코드이기 때문에)

2칸씩 땡겨서 변환해야하므로 유니코드 숫자에 2를 더했다.
2씩 더한 값이 122보다 크다면 26을 빼준 값, 즉 다시 a로 돌아가는 값이다.




(암호문 해석 코드)




(실행 결과)



실행 결과를 보면 url에 대하여 이 암호코드를 적용해봐라 라는 뜻이다.




(url)



url의 모습이다 여기서 map 밖에 건드릴것이 없어서

map을 코드에 대입시켜보니 ocr이라는 값이 나왔고





(답 입력)




map을 ocr로 바꾸어 주었다.





(다음 문제로 넘어가는 화면)



정답이다~ :)

'WarGame > Python Challenge' 카테고리의 다른 글

Python Challenge - 5  (0) 2017.01.18
Python Challenge - 4번  (0) 2017.01.09
Python Challenge - 3번  (0) 2017.01.02
Python Challenge - 2  (0) 2017.01.01

+ Recent posts