-
python challenge-3WarGame & 문제풀이/pythonchallenge.com 2019. 8. 20. 10:16
저번 2번 문제에 이어서 이번 3번문제는 다음 주소로 들어간다.
문제 주소 : http://www.pythonchallenge.com/pc/def/equality.html
3번 문제를 보면 힌트가 있다.
One small letter, surrounded by EXACTLY three big bodyguards on each of its sides. 라고 힌트를 준다.
중요해 보이는 부분을 해석해보면 3명의 큰 보디가드가 양쪽에 있다 라고 대충 추측이 가능하다.
사진을 봐도 큰양초 3개 와 작은양초 1개 그다음 큰양초 3개가 놓여져 있다.
하지만 주어진것은.. 이것뿐이다 그렇다면?
당연히 웹 소스파일을 뜯어봐야 하는법!!
소스파일을 확인해 봤더니… 역시나! 저번에 풀었던 2번문제 처럼 주석으로 보기싫은(?) 문장들이 놓여져 있다.
그렇다면 저 주석부분을 당연히 메모장으로 옮겨야 겠지?
그리고 나서 곰곰히 생각을 해보았다.
대문자와 소문자로 이루어진 저 주석의 문장들 그리고 힌트의 3 1 3 형식의 모양..
뭔가 대문자 3개 소문자 1개 대문자 3개로 이루어진 것을 찾는 문제 같았다.
그래서 바로 아톰 에디터를 이용해서 코드를 작성했습니다.
저는 import로 re 와 string 을 사용했습니다.
1,2번줄 : import 선언
4,5번줄 : 파일입출력을 하기 위해서 읽어올 txt파일과 결과를 담을 txt파일 선언
7번 : str 선언 및 변수 초기화
9번~13번 :
10번 줄 : f1에 있는 문장을 하나씩 line변수에 담기
11번 줄 : 더 이상 문장이없을때 을 위한 조건문
12번 줄 : 참일때 while 무한루프 정지.
13번 줄 : str변수에 line에 담긴 문장 전부 담기
15번줄 : [re를 이용한 형식 컴파일] pattern변수안에 다음과 같이 컴파일
[a-z][A-Z][A-Z][A-Z][a-z][A-Z][A-Z][A-Z][a-z] <- 소대대대소대대대소
원래 문제에서는 대대대소대대대 만 찾으면 되지만 조건을 대대대소대대대 로 잡으면
대대대대소대대대대 일때도 참으로 인식하고 대대대대대소대대대대대 일때도 참으로 인식하기 때문에 양쪽 끝에 소를 두는것으로 예외처리를 한다.
기본 형식이 re.compile(pattern , [flags]) 로 pattern을 컴파일하여 '정규표현식 객체(regular expression object)'를 반환합니다.
16번줄 : sen에 pattern에 컴파일된 형식과 str에 들어있는 문장을 비교해서 조건이 참인경우에 리스트로 반환
합니다.
기본 형식이 re.fundall(pattern , string[, flags])로 string에서 pattern과 매치되는 모든 경우를 찾아 리스트로 반환합니다.
18번~20번줄 :
18번줄 : 0부터 sen의 길이 까지 for문 돌리기
19번줄 : pattern에 [A-Z]형식으로 컴파일해서 넣기
20번줄 : sen의 i번 인덱스에 담아 뒀던 sen[i] 에서 pattern형식의 단어를 공백으로 바꿔줍니다.
기본 형식이 re.sub(pattern , repl , string [,count])로 string에 있는 문자열중에서 pattern과 일치하는 형식이 있다면 repl로 변환해 줍니다.
22번~24번줄 :
22번줄 : 0부터 sen의 길이 까지 for문 돌리기
23번줄 : num이라는 변수에 sen[i]안에있는 소문자를 넣습니다. (넣는이유는 예외를미리 배제하기 위해서 소문자를 양쪽끝에 넣어 뒀는데 sen안에 소문자 한개가 아닌 양쪽끝에있는 소문자 까지해서 3개가 한 문자로 들어있기 때문에 24번 줄에서 양쪽에 있는 소문자를 지워야 합니다.)
24번줄 : sen[i]에 원래있던 문자열중에서 가운데 꺼만 다시 담습니다.
26번~27번줄 :
26번줄 : 0부터 sen의 길이 까지 for문 돌리기
27번줄 : f2에 sen에 들어있는 문자써넣기
29번~30번줄 : 열었던 파일들 닫아주기
이렇게 코드를 짜서 실행을 하고 L3slv.txt 파일을 열어보면
처럼 나오게됩니다 ㅎㅎ
linkedlist를 URL에 적용을 해보면
http://www.pythonchallenge.com/pc/def/linkedlist.html 을 실행해 보면 고맙게도 조언을 해줍니다.
html이 아닌 php로 바꿔주면 되는 거였네요
http://www.pythonchallenge.com/pc/def/linkedlist.php 로 들어가시면 Pythonchallenge-4로 들어가게 됩니다.
* https://cafe.naver.com/samsungcomacademy/1252 << Python module-re[정규표현식] 참고 블로그
'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-1 (0) 2018.12.20 python challenge-0 (0) 2018.12.20