# 매칭점수
from operator import indexOf
import re
def solution(word, pages):
pages_info = []
for i, page in enumerate(pages):
temp = list(seperate(word, page)) + [0, i]
pages_info.append(temp)
for page in pages_info:
url, basic_score, link_num, links, link_score, index = page
for link in links:
for page in pages_info:
if link == page[0]:
page[4] += basic_score / link_num
pages_info.sort(key=lambda x: -(x[1]+x[4]))
return pages_info[0][5]
def seperate(word, page):
basic_score = 0
for f in re.findall(r'[a-zA-Z]+', page.lower()):
if f == word.lower():
basic_score += 1
url = re.search('<meta property="og:url" content="(\S+)"', page).group(1)
external_links = re.findall('<a href="(https://[\S]*)"', page)
external_links_num = len(external_links)
return url, basic_score, external_links_num, external_links
2019 카카오 블라인드 - 6번
1. 모든 페이지마다 [url, basic_score, links_num, links, link_score, index]를 만들어서 pages_info리스트에 추가해준다.
- seperate : 각페이지마다 자신의 url, 기본점수, 링크의 수, 링크들 을 검색해서 반환하는 함수
2. pages.info를 기본점수와 링크점수의 합을로 내림차순 정렬
3. 가장 큰 값의 인덱스 return
정규표현식을 모르면 절대 못푼다고 장담한다. 파이썬의 정규표현식을 안다룬지 오래됐어서 구글링했다...
나머지 로직은 굉장히 쉽다.
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Lv1 - 신고 결과 받기 (파이썬) (0) | 2022.03.15 |
---|---|
[프로그래머스] - 블록게임 (파이썬) (0) | 2022.02.15 |
[프로그래머스] - 길 찾기 게임 (파이썬) (0) | 2022.02.15 |
[프로그래머스] - 무지의 먹방 라이브 (파이썬) (0) | 2022.02.15 |
[프로그래머스] - 후보키 (파이썬) (0) | 2022.02.15 |