Algorithm

[Algorithm] BOJ : 한국이 그리울 땐 서버에 접속하지

kimsangjunzzang 2025. 1. 21. 14:01
728x90
반응형

안녕하세요, iOS 개발하는 루피입니다.

 

오늘은 백준 9996번 한국이 그리울 땐 서버에 접속하지 문제를 풀어 보겠습니다.

 

바로 시작합니다.

 


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

풀이

#include<bits/stdc++.h>
using namespace std;

int main() {
    int testCase; cin >> testCase;
    string pattern; cin >> pattern;

    long long divide = pattern.find('*');
    string prefix = pattern.substr(0,divide);
    string suffix = pattern.substr(divide+1);

    for ( int i=0;i<testCase;i++) {
        string str; cin >> str;
        string tmp1,tmp2;

        if(prefix.size() + suffix.size() > str.size()) {
            cout <<"NE\n";
        } else {

            for ( int i=0;i<prefix.size();i++) {
                tmp1 += str[i];
            }
            for ( long long i=str.size()-suffix.size();i<str.size();i++) {
                tmp2 += str[i];
            }
            if (tmp1 == prefix && tmp2 == suffix) cout << "DA\n";
            else cout << "NE\n";
        }
    }
    return 0;
}
  1. * 를 기준으로 패턴을 분리해서 변수에 저장합니다.
  2. prefix와 suffix가 str.size 보다 커질 경우 불가능합니다.
    • 이 부분에서 이해가 잘 안 될 수 있어 부가 설명을 도와 드리겠습니다.
    • 만약 preix가 a 이고 suffix가 aa라고 가정해 봅시다.
    • 그러면 str이 aa일 경우 어떻게 될까요? -> 조건 성립이 불가능하게 됩니다.
  3. tmp1, tmp2를 만들어 tmp1은 맨 앞부터 prefix 사이즈만큼의 글자가 prefix와 같은 글자인지 체크합니다. tmp2 는 str의 맨 끝부터 suffix 사이즈 만큼의 글자가 suffix와 같은 글자인지 체크합니다.

오늘도 화이팅입니다!

728x90
반응형