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
- 빌더
- 프로토타입
- 팩터리
- 프로토타입 중복처리
- 팩터리 패턴
- 컴포지트
- 브릿지 패턴
- 싱글톤 패턴
- 그루비 스타일 빌더
- 데커레이터
- 디자인패턴
- 디자인 패턴
- 컴포지트 패턴
- 데커레이터 패턴
- 싱글턴
- 프로토타입 패턴
- 단순한 빌더
- 빌더 패턴
- 브릿지
- 내부 팩터리
- 모던C++디자인패턴
- 팩터리 메서드
- 함수형 팩터리
- 컴포지트 빌더
- 추상 팩터리
- 동적 데코레이터
- 싱글톤
- 흐름식 빌더
- 동적 데커레이터
- 싱글턴 패턴
Archives
- Today
- Total
GGym's Practice Notes
백준 9935 : 문자열 폭발 본문
스택 문제
스택에 폭발 문자열의 앞부분을 쌓아두고 터지면 스택에 있는 것을 pop하면서 없애면 된다.
스택에 쌓이는 도중에 다른 문자열이 들어오면 스택 앞에 있는 문자열은 터지지 않으므로 스택을 비워놓는 것이 중요하다.
#include <cstdio> //9935_문자열폭발 [스택]
#include <stack>
#include <iostream>
using namespace std;
int main(){
stack<int> S;
char str[1000001];
char boom[1000001];
string result = "";
scanf("%s %s", str, boom);
int l;
for(l=0; boom[l]!='\0'; l++);
for(int i=0; str[i] != '\0';i++){
if (boom[0] == str[i])
S.push(1);
else if (!S.empty() && boom[S.top()] == str[i])
S.top()++;
else while(!S.empty()) S.pop();
result += str[i];
if(!S.empty() && S.top() == l) {
S.pop();
result.erase(result.size()-l, l);
}
}
if(result.size() == 0)printf("FRULA");
else printf("%s", result.c_str());
return 0;
}
'Algorithm' 카테고리의 다른 글
백준 2042 : 구간 합 구하기 (0) | 2021.04.28 |
---|---|
백준 1062 : 가르침 (0) | 2021.04.28 |
백준 1167 : 트리의 지름 (0) | 2021.04.20 |
프로그래머스 Level2_ 수식 최대화 (C++) (0) | 2020.10.31 |
프로그래머스 Level2_ 프린터 (C++) (0) | 2020.10.31 |