정규 표현식을 이용하는 문제이다. 문제를 읽어보니 정규 표현식과 같은 패턴을 가지고 있다는 점을 알 수 있다. C++에서는ㄷ regex
라는 헤더를 통해 직접적으로 정규 표현식을 사용할 수 있다. 이를 통해 주어진 문자열과 패턴을 비교하여 일치하는지 확인을 한 후 출력해주었다. 꼭 정규 표현식이 아니라 일일이 비교하는 방식으로도 풀 수 있을 것 같다. 어렵지 않게 풀 수 있었던 문제였다.
#include <iostream>
#include <regex>
using namespace std;
int T;
string s;
regex pattern("(100+1+|01)+");
void solution() {
cout << (regex_match(s, pattern) ? "YES\n" : "NO\n");
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
cin >> T;
while(T--) {
cin >> s;
solution();
}
return 0;
}