문제 링크

문제 해설

Idea

  • Implementation, String
  • ,
    ,

    태그 등을 구분

  • 의 attribute인 title을 우선 출력하고 안에 있는

    를 한 줄씩 출력

  • 안에 있는 태그와 시작과 끝에 있는 공백을 지우고 2개 이상의 공백을 하나로 변경

  • 제목은 무조건 존재하고 태그 사이에는 공백이 없으며 태그는 올바른 쌍으로만 주어짐을 보장
  • 정규 표현식을 활용해 조건에 맞는 문장을 파싱하고 불필요한 문자를 제거해 출력

Data Size

  • source: str(1,000,000)

해설 코드

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
import re

source = input()

main = re.findall('<main>(.*)</main>', source)[0]
div_list = re.findall('<div title="(.*?)">(.*?)</div>', main)

for title, paragraph in div_list:
    print('title :', title)
    p_list = re.findall('<p>(.*?)</p>', paragraph)
    for p in p_list:
        p = re.sub('(<.*?>)', '', p)
        p = re.sub('\s+', ' ', p.strip())
        print(p)