문제: https://www.acmicpc.net/problem/9996
*
하나가 주어짐*
는 문자열 사이에 위치하며, 빈 문자열 포함 아무 문자열로 치환 가능*
기준으로 start와 end로 나눈 후, 파일 이름이 start로 시작하고 end로 끝나는지 확인하는 방식으로 구현할 수 있음ab
일 때 패턴이 ab*b
라면 길이를 확인하지 않았을 때 일치한다고 판단됨const fs = require("fs")
const [n, pattern, ...arr] = fs.readFileSync("/dev/stdin").toString().trim().split("\n")
const [start, end] = pattern.split("*")
for (let i = 0; i < n; i++) {
if (arr[i].length < start.length + end.length) {
console.log("NE")
} else {
console.log(arr[i].startsWith(start) && arr[i].endsWith(end) ? "DA" : "NE")
}
}
^
는 시작을, .
은 반복을, $
은 끝을 나타냄.*
가 *
의 역할을 정확히 대체함const fs = require("fs")
const [n, pattern, ...arr] = fs.readFileSync("/dev/stdin").toString().trim().split("\n")
const regex = new RegExp(`^${pattern.replace("*", ".*")}$`)
for (let i = 0; i < n; i++) {
console.log(regex.test(arr[i]) ? "DA" : "NE")
}