프로그래머스 코딩테스트 고득점 Kit의 문제입니다.
https://programmers.co.kr/learn/challenges?tab=algorithm_practice_kit
문제
https://programmers.co.kr/learn/courses/30/lessons/42893
내가 작성한 코드
# 거듭된 실패로 그냥 날려버렸다...
None
- 아무래도 html 문서가 길고 태그들이 복잡하게 얽혀서 특정 문장을 파싱해내는데에 문제가 있었던 것 같다
다른 사람이 작성한 코드
import re
def solution(word, pages):
answer = 0
meta_parser = re.compile('<meta(.+?)/>')
a_parser = re.compile('<a(.+?)>')
page_infos = []
for page in pages:
page_dict = dict()
a_tags = a_parser.findall(page)
outer_url = []
for a_tag in a_tags:
first_idx = end_idx = -1
for idx, char in enumerate(a_tag):
if char == '"':
if first_idx == -1:
first_idx = idx
elif end_idx == -1:
end_idx = idx
outer_url.append(a_tag[first_idx+1:end_idx])
meta_tag = meta_parser.search(page).group()
content_prop = meta_tag.split(' ')[2]
first_idx = end_idx = -1
for idx, char in enumerate(content_prop):
if char == '"':
if first_idx == -1:
first_idx = idx
elif end_idx == -1:
end_idx = idx
url = content_prop[first_idx+1: end_idx]
page_dict['outer_url_list'] = outer_url
page_dict['url'] = url
page_dict['keyword_point'] = re.sub('[^a-z]+', '.', page.lower()).split('.').count(word.lower())
page_dict['link_point'] = 0
page_infos.append(page_dict)
for page_info in page_infos:
for outer_url in page_info['outer_url_list']:
for outer_url_page_candidate in page_infos:
if outer_url == outer_url_page_candidate['url']:
outer_url_page_candidate['link_point'] += page_info['keyword_point']/len(page_info['outer_url_list'])
point_lst = [page_info['keyword_point'] + page_info['link_point'] for page_info in page_infos]
print(point_lst)
return point_lst.index(max(point_lst))
- 다른 분의 코드인데, for문이 많은 것을 보니 내가 regex에 사용한 패턴이 약했나 싶었다
https://geonlee.tistory.com/84
기억해야할 것
- 나중에 다시 풀어보려고 다른 분의 코드를 제대로 읽진 않았다
- 얼추 보았을 때 regex 패턴이 명확하지 못했다는 생각이 든다
- 시간을 너무 쓰지 말자 싶어서 넘어가지면, 빨리 다시 풀어보고 싶다
'코딩테스트' 카테고리의 다른 글
[프로그래머스][KAKAO_BLIND][2018] 방금 그 곡 (0) | 2021.09.03 |
---|---|
[프로그래머스][KAKAO_BLIND][2019] 블록 게임 (0) | 2021.09.02 |
[프로그래머스][KAKAO_BLIND][2019] 길 찾기 게임 (0) | 2021.09.02 |
[프로그래머스][KAKAO_BLIND][2021] 신규 아이디 추천 (0) | 2021.09.02 |
[프로그래머스][KAKAO_BLIND][2018] 비밀지도 (0) | 2021.09.02 |