-
python challenge-1WarGame & 문제풀이/pythonchallenge.com 2018. 12. 20. 22:11
Python challenge-0에 이어서 오늘은 1번 문제를 풀이 해보겠습니다.
문제 주소 : http://www.pythonchallenge.com/pc/def/274877906944.html
문제를 한번 보겠습니다. K->M O->Q E->G를 보고 바로 저 보라색 부분의 문장을 저 조건과 같이 바꿔주는 코딩을 바로 작성해 보았습니다.
1번줄 : re import를 사용 하기위해 선언
3번줄 : 저 보라색 문장을 담을 str변수 선언 및 초기화
5번~7번줄 :
re.sub(pattern , repl , string [,count])이것이 re.sub()의 기본식 입니다.
5번줄 : str에 있는 문장에서 K나 k를 m으로 변환하여 slv에 넣는다.
6번줄 : slv에 있는 문장에서 O나 o를 q로 변환하여 slv에 넣는다.
7번줄 : slv에 있는 문장에서 E나 e를 g로 변환하여 svl에 넣습니다.
9번줄 : 원래 있던 Original 문장과 결과를 출력해 줍니다.
실행 :
Original :
g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj.
Answer :
g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr ammnsrcpq ypc dmp. bmglg gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmlg. sqglg qrpglg.myicrpylq() gq pcammmclbcb. lmu ynnjw ml rfc spj.
음..? 무슨 이야기인지 1도 이해가 가지않습니다.. 그래서 문제를 한번 더 봤습니다.
everybody thinks twice before solving this.
이문제를 풀기전에 생각을 2번 하라고 하셨더라고요 ㅋㅋㅋ
그래서 생각을 해봤는데 K - L - M // O - P - Q // E - F - G 전부 2개씩 밀려있더라고요.
아 저 보라색 문장을 전부 2개씩 밀면 답이 나오지 않을까 라는 생각을 하게 되었습니다.
1번줄 : 저 보라색 문장을 담을 str변수 선언 및 초기화
2번~7번줄 :
3번줄 : num에 str문자열 인덱스 하나씩 해서 아스키코드 숫자 담기
4번줄 : 범위 지정
5번줄 : 아스키코드 +2만큼 밀기
6번줄 : num 이 z보다 크면 특수기호가 나오기 때문에 조건걸기
7번줄 : 특수기호가 나오면 안되기 때문에 26만큼을 빼서 앞으로 밀기
8번줄 : num을 문자로 변환해서 출력
실행결과를 보면
i hope you didnt translate it by hand. thats what computers are for. doing it in by hand is inefficient and that's why this text is so long. using string.maketrans() is recommended. now apply on the url.
대충 해석을 해보면 손으로 변역하는것은 텍스트가 길기 때문에 비효율적입니다. String.maketrans() 이용해 보세요. 그리고 url에 적용 하세요. 라고 해석할수 있습니다.
물론 저 코드를 이용해서 url 로 가보면 map을 코드 실행 해보면 ocr로
http://www.pythonchallenge.com/pc/def/ocr.html << 다음 문제로 넘어갈수 있습니다.
하지만 string.maketrans()를 추천한다고 하니 한번 사용해 보겠습니다.
파이썬의 장점은 다양한 레퍼런스가 있기때문에 이용해보는것도 좋기 때문입니다.
추천한 레퍼런스를 사용해서 코드를 다시 짜보니.. 대박이더라고요..
저는 파이썬 3를 사용하기 때문에 string.maketrans()를 사용할수 없습니다. 대신 다음과 같이 사용해야 합니다.
str.maketrans()와 같이 말이지요.
1번줄 : string import 선언
2번줄 : 문자열 넣기
3번줄 : str.maketrans("바뀌기전 형식","바뀐후 형식")의 형식을 가지고 있습니다.
4번줄 : 바뀐 문자열 출력.
결과는 같습니다.
8줄 코드가 레퍼런스 사용으로 4줄로 줄었습니다.
str 자리에 map을 넣고 컴파일을 하면 ocr이 똑같이 나오기 때문에 위에서 말한
http://www.pythonchallenge.com/pc/def/ocr.html 로 들어가시면 될것 같습니다.
'WarGame & 문제풀이 > pythonchallenge.com' 카테고리의 다른 글
python challenge-6 (0) 2019.08.20 python challenge-5 (0) 2019.08.20 python challenge-4 (0) 2019.08.20 python challenge-3 (0) 2019.08.20 python challenge-0 (0) 2018.12.20