[Programmers] P42893 매칭 점수
[Programmers] P42893 매칭 점수
Question
Language: Python
- url을 파싱하기 위한 정규 표현식 사용
- 외부 링크를 파싱하기 위한 정규표현식 –> 외부 링크의 개수가 -> 외부 링크 점수
- page 내부에 특정 word가 사용된 횟수(단, 명확하게 단어 단위로 구분되어야한다.)
- 이때, 단어 단위로 분리한 다음, 검색어와 정확하게 일치하는 단어 개수를 구한다. –> 기본 점수
- 특정 페이지에 대한 매칭 점수는 기본 점수 + 해당 페이지를 외부 링크로 가지는 페이지의 기본점수/외부링크점수 의 총합
Solution
import re
def solution(word, pages):
answer = 0
word=word.lower()
#1
url_pattern=re.compile("<meta property=\"og:url\" content=\"(\S*)\"")
#2
a_pattern=re.compile("<a href=\"(\S*)\"")
#3
word_parser=re.compile("([a-z]+)")
page_infos=[]
length=len(pages)
for page in pages:
info={}
page=page.lower()
info["url"]=url_pattern.findall(page)[0]
info["links"]=a_pattern.findall(page)
#3 기본 점수
info["basic_point"]=word_parser.findall(page).count(word)
#외부 링크 점수
info["outer_link_point"]=len(info["links"])
page_infos.append(info)
matching_point=0
for i in range(length):
page=page_infos[i]
#현재 페이지의 기본점수
point=page["basic_point"]
for j in range(length):
if i==j:
continue
temp_page=page_infos[j]
#현재 페이지를 외부 링크로 포함하고 있는 다른 페이지
if page["url"] in temp_page["links"]:
#그러한 페이지에 대해서, 해당 페이지의 기본점수 / 외부 링크 점수
point+=(temp_page["basic_point"]/temp_page["outer_link_point"])
if matching_point < point:
matching_point=point
answer=i
return answer
댓글남기기