programmers.co.kr/learn/courses/30/lessons/42893?language=python3
문자열 파싱문제
하는 방법만 알면 간단한 문제이지만, 실수하지 않도록 조심해야함
<Solution>
-re.search( ).group(1)은 search에서 소괄호로 묶인 부분만을 return 함
^ : 뒤의 문자 제외
[ ] : [ ] 사이의 문자들과 매치
\s : whitespace ( 공백, \n, \t, \r, \v, \f )와 매치됨
\S : whitespace가 아닌 것과 매치
\w : 문자+숫자와 매치
\W : ~\w
\d : 숫자
\D : ~\d
import re
def parsing(word,page):
page = re.sub('\s',' ',page).lower()
word = word.lower()
url = re.search('<meta[^>]*content="https://([\S]*)"/>', page).group(1)
words = re.findall('[a-z]+',page)
score = 0
for w in words:
if w==word: score+=1
links_parse = re.findall(r'<a href="https://[\S]*">', page)
links = []
for link in links_parse:
links.append(re.search(r'"https://([\S]*)"',link).group(1))
return url, score, links
def solution(word, pages):
info = dict()
scores = [0]*len(pages)
for i, page in enumerate(pages):
url, score, links = parsing(word,page)
info[url] = [score, links, i]
scores[i] = score
for url in info:
score, links, idx = info[url]
for turl in links:
if turl in info:
scores[info[turl][2]] += score/len(links)
return scores.index(max(scores))
'PROGRAMMERS' 카테고리의 다른 글
[프로그래머스] - 매출 하락 최소화 (LEVEL 4) (0) | 2021.03.16 |
---|---|
[프로그래머스] - 지형 이동 (LEVEL4) (0) | 2021.03.11 |
[프로그래머스] - 외벽 점검 (LEVEL 3) (0) | 2021.03.11 |
[프로그래머스] - 징검다리 건너기 (LEVEL3) (0) | 2021.02.15 |
[프로그래머스] - 합승 택시 요금 (LEVEL3) (0) | 2021.02.13 |
댓글