Koala - 14기/코딩테스트 준비 스터디

백준 9996번 한국이 그리울 땐 서버에 접속하지 C++

Kim Doo Hyeon 2024. 3. 31. 00:19

문제

https://www.acmicpc.net/problem/9996


Algorithm

정규식을 활용한다.
C++ 정규식에서 regex_match(str, e)는 정규표현식 e와 문자열 str이 일치함을 나타내고,
모든 문자열을 표현하기위한 정규식 e는 ".*"으로 나타낼 수 있다.

input의 표현식에서 *를 .*으로 바꾸어 정규표현식을 생성한 뒤, regex_match를 수행한다.

 


 

 

Code

#include <bits/stdc++.h>

using namespace std;
#define IAMFAST ios_base::sync_with_stdio(false);cin.tie(0);
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<long long, long long> pll;

int n;
string str;

void INPUT()
{
    IAMFAST
    cin >> n >> str;
}

void solution()
{
    string reg;
    for (auto s : str)
    {
        if (s == '*') reg += ".*";
        else reg += s;
    }

    regex e(reg);
    while (n--)
    {
        string file; cin >> file;
        regex_match(file, e) ? cout << "DA\n" : cout << "NE\n";
    }
}

int main()
{
    INPUT();
    solution();
}