BOJ 12904 : A와 B

2021. 1. 10. 13:12PS/Inplemention

www.acmicpc.net/problem/12904

 

12904번: A와 B

수빈이는 A와 B로만 이루어진 영어 단어가 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다. 이런 사실에 놀란 수

www.acmicpc.net

상당히 괜찮은 문제이다.

 

우리는 A->B로 변할 수 있는지 없는지를 판별하면 된다. 

 

연산들은 모두 뒤에서 넣는 연산들밖에 없다.

 

그러므로 A->B로 변환이 가능하다면 우리는 이 변환의 경로가 일정함을 알 수 있다.

 

그러므로 B에서 각 단계를 역연산하면서 A와 길이가 같게 만들어 주고, 이가 A랑 같은지 판별해주면 된다.

 

#include <bits/stdc++.h>
#define MEM 300009
#define sanic ios_base::sync_with_stdio(0)
#define x first
#define y second
using namespace std;
typedef long long ll;
typedef pair<ll, string> pi;
const ll INF = 3e9+7;
const ll MOD = 1e9+9;
ll t,n,m;
main()
{
    sanic; cin.tie(0); cout.tie(0);
    string s1,s2;
    cin >> s1 >> s2;
    ll a=s1.size(), b=s2.size();
    for(int i=0; i<b-a; i++){
        char g=s2[s2.size()-1];
        s2 = s2.substr(0,s2.size()-1);
        if(g=='B') reverse(s2.begin(), s2.end());

    }
    if(s1==s2) cout << 1;
    else cout << 0;
}

 

'PS > Inplemention' 카테고리의 다른 글

BOJ 10836 : 여왕벌  (0) 2021.01.10