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;
}
- * 를 기준으로 패턴을 분리해서 변수에 저장합니다.
- prefix와 suffix가 str.size 보다 커질 경우 불가능합니다.
- 이 부분에서 이해가 잘 안 될 수 있어 부가 설명을 도와 드리겠습니다.
- 만약 preix가 a 이고 suffix가 aa라고 가정해 봅시다.
- 그러면 str이 aa일 경우 어떻게 될까요? -> 조건 성립이 불가능하게 됩니다.
- tmp1, tmp2를 만들어 tmp1은 맨 앞부터 prefix 사이즈만큼의 글자가 prefix와 같은 글자인지 체크합니다. tmp2 는 str의 맨 끝부터 suffix 사이즈 만큼의 글자가 suffix와 같은 글자인지 체크합니다.
오늘도 화이팅입니다!
728x90
반응형