문제
https://www.acmicpc.net/problem/9935
개념
문자열, 스택
실행 결과
구현 코드(c++)
#include <iostream>
#include <string>
using namespace std;
int main() {
string a, b, res;
cin >> a >> b;
for (char c : a) {
res += c;
if (res.size() >= b.size()) {
int idx = res.size() - b.size();
if (res.substr(idx) == b)
res.erase(idx);
}
}
cout << (res.empty() ? "FRULA" : res) << '\n';
return 0;
}
// 안녕!
코드 설명
처음 문제를 풀 때는 스택 자료구조를 사용했다.
문자열의 인덱스를 이용해 한 글자씩 스택에 넣고 폭발 문자열과 일치한다면 해당 글자들을 제거하려고 했기 때문이다. 하지만 스택 STL을 사용하지 않더라도 string을 스택처럼 사용하면 충분히 문제를 해결할 수 있었다.
1. 입력 문자열을 한 글자씩 처리하며 결과 문자열(res)에 복사한다.
2. 추가된 res의 마지막 문자와 폭발 문자열의 해당 위치 문자가 동일한지 확인한다.
3. 만약 동일하다면 res에서 해당 문자를 제거한다.
'PS' 카테고리의 다른 글
[백준] 10814번: 나이순 정렬 (0) | 2025.01.06 |
---|---|
[코드트리] 선두를 지켜라 (0) | 2025.01.03 |
[백준] 2667번: 단지번호붙이기 (0) | 2024.12.13 |
[코드트리] 제곱수의 합으로 나타내기 (0) | 2024.12.08 |
[백준] 1010번: 다리 놓기 (0) | 2024.10.23 |