λ¬Έμ
μ νμ κΈ°λ³Έ λ¨μλ { 0 , 1 } λ κ°μ§λ‘ ꡬμ±λμ΄μμΌλ©°, x+ ( ) λ μμμ κ°μ(μ΅μ 1κ°) xμ λ°λ³΅μΌλ‘ μ΄λ£¨μ΄μ§ μ νμ μ§ν©μ λνλΈλ€.λ°λ³΅μ μλ―Ένλ + μΈμλ or λ₯Ό μλ―Ένλ | κΈ°νΈκ° μλ€. { x | y } λ x νΉμ y λ₯Ό μλ―Ένλ κ²μΌλ‘, { 0+ | 1+ } λ { 0 , 1 , 00 , 11 , 000 , 111 , … } μ μ§ν©μ μλ―Ένλ€. μλλ λ κΈ°νΈλ₯Ό 볡ν©μ μΌλ‘ μ¬μ©ν μμ΄λ€.
- (100+1+ | 01)+
κΉλν λ°μ¬λ λ€μν μ ν κΈ°λ‘ μ€μμ μμ ν¨ν΄μ μ§λλ μ νλ₯Ό κ°λ €λ΄λ νλ‘κ·Έλ¨μ νμλ‘ νλ€. μ΄λ₯Ό μνν μ μλ νλ‘κ·Έλ¨μ μμ±νλΌ.
νμ΄
ν¨ν΄μ΄ μ ν΄μ Έμκ³ κ° ν¨ν΄μ μμ λ¬Έμκ° λ€λ₯΄κΈ° λλ¬Έμ, κ°κ°μ ν¨ν΄μ ν΄λΉνλ μ§λ₯Ό νλ³νλ ν¨μλ₯Ό νλ μ¬μ©νλ©΄ λλ€. νμ§λ§ λ€μν ν¨ν΄μΌλ‘ ν΄μλ μ μλ κ²½μ°κ° μλλ°, λ€μκ³Ό κ°μ κ²½μ°μ΄λ€.
011000111001
μ²μ νμμ λ "01", "100,,,1,,," ν¨ν΄μ μ‘°μ¬νλ©΄μ νμμ ν¨ν΄μμ 1 μ΄νμ μ€λ 0μ μ°Ύλ μμΌλ‘ νμ΄λ₯Ό ꡬμ±νμλ€. κ·Έλ κ² νλ μμ ν¨ν΄μ "01 1000111 001"λ‘ ν΄μλ μ μλλ° μ΄νμ λμ€λ 001μ΄ μ무 ν¨ν΄κ³Όλ μΌμΉνμ§ μμΌλ―λ‘ NOλ₯Ό μΆλ ₯νκ² λμ΄λ²λ Έλ€. νμ§λ§ ν΄λΉ ν¨ν΄μ "01 100011 1001"μΌλ‘ "YES"λ₯Ό μΆλ ₯ν΄μΌ νλ μμ μ΄λ€. λ°λΌμ 100+1+ ν¨ν΄μμ 1μ κ°μμ λ°λΌ λͺ¨λ κ²½μ°μ μλ₯Ό 체ν¬νλ λ°©μμΌλ‘ λ³κ²½νμκ³ , κ·Έλ¬κΈ° μν΄μ μ¬κ·λ‘ ν¨μλ₯Ό ꡬμ±νμλ€.
μ½λ
#include <iostream>
#include <string>
using namespace std;
int findPattern(string str){ // 0:YES, 1:NO
if(str.length() == 0) return 0;
if(str[0] == '0'){ // 01 ν¨ν΄
if(str.length() >= 2 && str[1] == '1'){
str = str.substr(2);
return findPattern(str); // ν¨ν΄ μ κ±° ν μ¬κ·
}
return 1;
}else{ // 100+1+ ν¨ν΄
if(str.length() >= 4 && str.substr(0, 3) == "100"){
str = str.substr(3); // 100 μ κ±°
int startIdx = str.find('1');
if(startIdx == string::npos){ // 1μ΄ μμΌλ©΄ μ€ν¨
return 1;
}
str = str.substr(startIdx); // 1 μ΄μ μ λ¬Έμλ€ μ κ±°
while(str.length() >= 1 && str[0] == '1'){
// λ¬Έμλ₯Ό νλμ© μ κ±°ν΄κ°λ©° μ±κ³΅νλ κ²½μ°κ° λμ¬ λκΉμ§ 체ν¬
str = str.substr(1);
if(findPattern(str) == 1){
continue;
}
return 0; // μ±κ³΅
}
return findPattern(str); // ν¨ν΄ μ κ±° ν μ¬κ·
}
return 1;
}
}
int main() {
int T; cin >> T;
while(T--){
string str; cin >> str;
if(findPattern(str) == 1) cout << "NO" << '\n';
else cout << "YES" << '\n';
}
}
κ²°κ³Ό
μ¦λ§ μμ½λ© λͺ»νλ λ γ ...
'Algorithm λ¬Έμ > BOJ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[c++] BOJ 9342 :: μΌμ체 (0) | 2021.11.03 |
---|---|
[c++] BOJ 14906 :: μ€λ¬νΌ(Slurpys) (0) | 2021.11.03 |
[c++] BOJ 20040 :: μ¬μ΄ν΄ κ²μ (0) | 2021.10.10 |
[c++] BOJ 7579 :: μ± (0) | 2021.10.10 |
[c++] BOJ 1501 :: μμ΄ μ½κΈ° (0) | 2021.10.07 |
Comment