[C++]백준2812번 크게 만들기

less than 1 minute read

오늘은 백준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]; 
	}
}