[BOJ/C++] 9935(문자열 폭발)

푸른별·2023년 7월 25일
0

Algorithm

목록 보기
23/47
post-thumbnail

https://www.acmicpc.net/problem/9935

풀이 과정

  • 스택 문제임은 자명하나, 단순하게 스택이나 벡터를 사용하지 않고 단순히 string 클래스만을 사용하여 다음과 같이 풀어보았습니다.
  • 다만 해당 풀이는 즉시가 아니라 일정 구간으로 다시 위치를 돌아가서 지우는 것이므로 스택풀이가 시간 측면에서는 더 유리할 것으로 보입니다.
  1. 폭발 문자열은 사라지고, 남은 문자열 합해짐
    -> 구간 삭제
  2. 폭발 문자열은 같은 문자를 두 개 이상 포함X
    -> 스택

저는 다음과 같이 풀었습니다.

스택으로 풀이한다면 다음과 같이 진행되며, 위에서 말했던 것과 같이 스택 자료구조를 사용 시 즉각적인 피드백이 가능하여 시간적인 측면에서 유리하다는 장점이 있습니다.

정답 코드

#include<iostream>
using namespace std;

void solution() {
	string s, bomb, answer="";
	cin >> s >> bomb;
	int len = bomb.length();
	for (int i = 0; i < s.length(); ++i) {
		answer += s[i];
		int aLen = answer.length();
		if (aLen < len) continue;
		if (!bomb.compare(answer.substr(aLen - len, aLen))) {
			answer.erase(aLen - len, aLen);
		}
	}
	if (answer.empty()) {
		cout << "FRULA";
		return;
	}
	cout << answer;
}

int main() {
	cin.tie(0), cout.tie(0);
	ios_base::sync_with_stdio(0);
	solution();
	return 0;
}

profile
묵묵히 꾸준하게

0개의 댓글