https://www.acmicpc.net/problem/12904
코드
#include <iostream>
#include <algorithm>
#include <string>
#define fastio() ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
using namespace std;
string s, t;
int ss, tt;
int main() {
fastio();
cin >> s >> t;
ss = s.size() - 1; tt = t.size() - 1;
while (ss != tt) {
if (t[tt--] == 'A') t.pop_back();
else {
t.pop_back();
reverse(t.begin(), t.end());
}
}
if (s == t) cout << 1;
else cout << 0;
return 0;
}
|
cs |
풀이
ABA
ABBABABABABBBABA
입력이 위와 같이 주어진다면 더 긴 문자열을 기준으로 맨 뒤자리를 지워주면서 진행합니다
1.
ABA
ABBABABABABBBAB
- 문자열의 뒤에 A를 추가한다
위 규칙에 인하여 그냥 맨 뒤의 A를 없애주면 됩니다
2.
ABBABABABABBBAB -> ABBABABABABBBA -> ABBBABABABABBA
- 문자열을 뒤집고 뒤에 B를 추가한다.
위 규칙에 의하여 맨 뒤의 B를 없애고 뒤집어주면 됩니다.
1과 2를 S와 T의 길이가 같아질 때 까지 반복하면 됩니다.
'백준(C, C++) > 골드' 카테고리의 다른 글
백준 1041: 주사위 (0) | 2022.07.11 |
---|---|
백준 23832: 서로소 그래프 (0) | 2022.07.09 |
백준 2015: 수들의 합 4 [C/C++] (0) | 2022.06.16 |
백준 1405: 미친 로봇 [C/C++] (0) | 2022.06.16 |
백준 1744: 수 묶기 [C/C++], 다이나믹 프로그래밍 (0) | 2022.06.15 |