직접 풀어보고 올리는 코드입니다. 지적이나 더 좋은 방향에 대한 댓글은 항상 환영합니다.
생각의 흐름
처음에는 Stack을 직접 사용하면서 해결하려 했는데, 맨 뒤 문자열을 삭제하는 과정이 조금 힘들어 졌다.
따라서 다른 분의 글을 좀 참고하여 String 자체를 stack으로 생각하고 해결하는 방식으로 풀었다.
우선 비어있는 res라는 String에 한 글자씩 넣어 주다가, 방금 들어온 글자가 폭발 문자열의 마지막 글자와 같은경우 res에 담겨있는 이전 글자들도 폭발 문자랑 모두 비교하여 문자열의 마지막 n글자 (n = 폭발 문자열의 길이)가 폭발 문자열과 같다면, 뒷부분을 삭제하는 방식으로 해결하였다.
나의 코드
#include <bits/stdc++.h>
using namespace std;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
string s, bomb;
cin >> s >> bomb;
string res = "";
int bombIdx = bomb.length() - 1;
for (int i = 0; i < s.length(); i++) {
res += s[i];
if (res[res.length() - 1] == bomb[bombIdx]) {
if (res.length() >= bomb.length()) {
int cnt = 1;
for (int j = bombIdx - 1; j >= 0; j--) {
if (res[res.length() - (bombIdx - j) - 1] == bomb[j]) {
cnt++;
}
}
if (bomb.length() == cnt) {
for (int b = 0; b < bomb.length(); b++) {
res.pop_back();
}
}
}
}
}
if (res.length() > 0) {
cout << res << endl;
} else {
cout << "FRULA" << endl;
}
return 0;
}
'Algorithm > 백준' 카테고리의 다른 글
[백준][C++] 1043번: 거짓말 <200> (0) | 2022.03.16 |
---|---|
[백준][C++] 12581번: 숨바꼭질 2 <199> (0) | 2022.03.14 |
[백준][C++] 5693번: 이진 검색 트리 <197> (0) | 2022.03.08 |
[백준][C++] 1865번: 웜홀 <196> (0) | 2022.03.06 |
[백준][C++] 11444번: 피보나치 수 6 <195> (0) | 2022.03.04 |
댓글