알고리즘/백준

[백준 12904] A와 B C++

겜도리도리 2021. 12. 7. 22:27
반응형

문제

백준 12094 A와 B C++

 

12904번: A와 B

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

www.acmicpc.net

풀이

처음에 S에서 A, B를 붙여주는 BFS로 접근했다가, 길이가 1000 까지기 때문에 메모리 초과가 났습니다.

역으로 T 문자열의 뒤에서부터 접근하여, S와 똑같이 만들어 줄 수 있는지 검사합니다.

소스 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
 
string S, T;
 
int main() {
    cin >> S >> T;
    // T를 S로 만듦, 길이 같아질 때 까지
    while (T.length() > S.length()) {
        if (T.back() == 'A') {
            T.pop_back();
        }
        else {
            T.pop_back();
            reverse(T.begin(), T.end());
        }
    }
 
    if (S == T) {
        cout << 1;
    }
    else {
        cout << 0;
    }
    return 0;
}
cs
반응형