[C++]백준2812번 크게 만들기
오늘은 백준2812번 크게 만들기 문제를 풀어보도록 하자.
스택을 쓰거나 덱을 쓰는 문제였다. 예전 탑 문제랑 비슷한 문제이다.
문제는 다음과 같다.
[접근법]
1. 비어있으면 값을 넣고, 만일 들어오는 값이 더 크면 앞의 값을 제거해주면서 cnt를 늘려나간다. 만일 cnt가 0이거나 들어오는 값이 작으면 push만 해준다.
[코드]
#include <iostream>
#include <string>
#include <deque>
using namespace std;
int main(void) {
ios_base::sync_with_stdio(0);
cin.tie(0);
int N, K;
deque<char> dq;
string s;
cin >> N >> K;
cin >> s;
for (int i = 0; i < s.length(); i++) {
while (K && !dq.empty() && dq.back() < s[i]) {
dq.pop_back();
K--;
}
dq.push_back(s[i]);
}
for (int i = 0; i < dq.size() - K; i++) {
cout << dq[i];
}
}