농담곰담곰이의곰담농

9996. 한국이 그리울 땐 서버에 접속하지

by 브이담곰

 

9996번: 한국이 그리울 땐 서버에 접속하지

총 N개의 줄에 걸쳐서, 입력으로 주어진 i번째 파일 이름이 패턴과 일치하면 "DA", 일치하지 않으면 "NE"를 출력한다. 참고로, "DA"는 크로아티어어로 "YES"를, "NE"는 "NO"를 의미한다.

www.acmicpc.net

✔ 유형 : 구현

✔ 풀이 : String STL 활용, Split 함수 구현

 

⬇ 코드 보기

더보기
// Online C++ compiler to run C++ program online
#include <bits/stdc++.h>
using namespace std;

vector<string> results;

vector<string> split(string input, string delimiter) {
    vector<string> ret;
    long long pos = 0;
    string token = "";
    while ((pos = input.find(delimiter)) != string::npos) {
        token = input.substr(0, pos);
        ret.push_back(token);
        input.erase(0, pos + delimiter.length());
    }
    ret.push_back(input);
    return ret;
}

bool isCorrect(string pattern, string filename)
{
    vector<string> splitedpattern = split(pattern, "*");
    
    //1. * 앞의 패턴이 맞는가.
    auto result = filename.find(splitedpattern[0]);
    if(result == string::npos || result != 0)
    {
        return false;
    }
        
    
    //2. * 뒤의 패턴이 맞는가.
    // 앞에서 패턴 처리한 filename은 지운다.
    filename = filename.substr(result + splitedpattern[0].size());
    if(filename.size() == 0) return false;
    result = filename.find(splitedpattern[1], filename.size() - splitedpattern[1].size());
    if(result == string::npos || result != filename.size() - splitedpattern[1].size())
    {
        return false;
    }
        
    return true;
    
}

int main() {
    int N; // 파일 개수
    string pattern;
    vector<string> filenames;
   
    // Input
    cin >> N;
    cin >> pattern;
    for(int i = 0; i < N ; i++)
    {
        string name;
        cin >> name;
        filenames.push_back(name);
    }
    
    for(auto filename : filenames)
    {
        results.push_back(isCorrect(pattern,filename) ? "DA" : "NE");
    }
    
    //print result
    for(auto re : results)
    {
        cout<< re << endl;
    }
    return 0;
}

'Coding Test > Baekjoon' 카테고리의 다른 글

1978. 소수 찾기  (0) 2024.07.06
2559. 수열  (0) 2023.11.22
11655.ROT13  (1) 2023.11.21
1159.농구 경기  (0) 2023.11.21
10988.팰린드롬인지 확인하기  (0) 2023.11.21

블로그의 정보

농담곰담곰이의곰담농

브이담곰

활동하기