반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |
Tags
- msSQL
- softeer
- 이분탐색
- upper_bound
- Kafka
- 6987
- boj #19237 #어른 상어
- 연결요소
- 기술면접
- BOJ
- 파라메트릭
- 백트래킹
- @P0
- 물채우기
- dfs
- 경력
- 백준
- 퇴사통보
- compose
- 성적평가
- BFS
- 오퍼레터
- OFFSET
- 처우협의
- incr
- Docker
- 13908
- 매개변수탐색
- 처우산정
- 소프티어
Archives
- Today
- Total
기술 블로그
9935번 문자열 폭발 본문
728x90
반응형
https://www.acmicpc.net/problem/9935
stack을 활용한다.
1. 입력받은 문자열을 활용하여, for문을 수행한다.
입력받은 문자열의 문자를 stack에 push한다.
2. 현재 for문의 문자가 폭발 문자열의 마지막 문자와 같은지 비교한다.
3. 같으면, 위의 1번 stack에 담긴 문자를 하나씩 비교한다.
#include <bits/stdc++.h>
using namespace std;
int len;
string s, t;
stack<char> st;
int main()
{
cin.tie(0);
cin >> s >> t;
len = t.length();
for (auto c : s) {
st.push(c); // 입력받은 문자열을 for문 돌려준다
// 현재 문자와 폭발문자열의 마지막 문자가 같으면
if (c == t[len - 1] && st.size() >= len) {
bool bomb = true;
stack<char> temp;
// stack을 돌면서 같으면 삭제, 같지 않으면 bomb에 false로 표시
for (int j = len - 1; j >= 0; j--) {
if (st.top() != t[j]) {
bomb = false;
break;
}
// 지운 문자를 임시 stack에 저장
temp.push(st.top());
st.pop();
}
// 폭발하지 않으면
if (!bomb) {
// 위의 st stack에서 지운 문자를 다시 st stack에 push
while (!temp.empty())
{
st.push(temp.top());
temp.pop();
}
}
}
}
vector<char> v;
// 출력
if (st.empty()) {
printf("FRULA\n");
}
else {
while (!st.empty())
{
v.push_back(st.top());
st.pop();
}
int vc = v.size();
for (int i = vc - 1; i >= 0; i--) {
printf("%c", v[i]);
}
printf("\n");
}
return 0;
}
728x90
반응형
'알고리즘 문제 > BOJ' 카테고리의 다른 글
2138번 전구와 스위치 (0) | 2022.05.03 |
---|---|
17471번 게리맨더링 (0) | 2022.04.27 |
15683번 감시 (0) | 2022.03.09 |
2660번 회장뽑기 (0) | 2022.02.06 |
11000번 강의실 배정 (0) | 2021.09.14 |