알고리즘
[BOJ] 22859 - HTML 파싱 (Python, JavaScript)
흙금
2023. 1. 20. 23:41
아이디어
정규 표현식에 따라 문자열을 처리해준다.
풀이 #1 (Python)
re 모듈의 sub 함수를 이용하여 입력 받은 문자열을 조건에 맞게 파싱하고, 그 결과를 출력한다.
import re
li = [(r'</?main>', ''), (r'<div title="', 'title : '),
(r'">', '\n'), (r'<[^p>]*>', ''),
(r'<[a-zA-Z0-9 ]+[a-zA-Z0-9 ]+>', ''),
(r'</[a-zA-Z0-9 ]+[a-zA-Z0-9 ]+>', ''),
(r'<p> *', ''), (r' *</p>', '\n'), (r' {2,}', ' '), (r'\n+$', '')]
HTML = input()
for p, s in li:
HTML = re.sub(p, s, HTML)
print(HTML)
풀이 #2 (JavaScript)
풀이 #1 코드와 마찬가지로 자바스크립트의 정규 표현식에 맞게 코드를 작성한다.
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString();
const list = [[/<\/?main>/g, ''], [/<div title="/g, 'title : '],
[/">/g, '\n'], [/<[^p>]*>/g, ''],
[/<[a-zA-Z0-9 ]+[a-zA-Z0-9 ]+>/g, ''],
[/<\/[a-zA-Z0-9 ]+[a-zA-Z0-9 ]+>/g, ''],
[/<p> */g, ''], [/ *<\/p>/g, '\n'], [/ {2,}/g, ' '], [/\n+$/, '']];
let HTML = input;
for (let li of list) {
HTML = HTML.replace(li[0], li[1]);
}
console.log(HTML);