danbibibi
article thumbnail

문제

문제 바로가기> BOJ 2812번: 크게 만들기

 

2812번: 크게 만들기

N자리 숫자가 주어졌을 때, 여기서 숫자 K개를 지워서 얻을 수 있는 가장 큰 수를 구하는 프로그램을 작성하시오.

www.acmicpc.net

 

풀이

큰 수를 만났을 때, 현재 수보다 작은 수가 앞에 있다면 해당 수를 지우기 위해 스택을 이용하였다!

#include<iostream>
#include<deque>
using namespace std;

int N, K;
string str;
deque<char> s;

void input(){
    cin >> N >> K;
    cin >> str;
}

void solve(){ // 숫자 K개를 지워서 얻을 수 있는 가장 큰 수
    for(char c : str){
        while(!s.empty() && s.back()<c && K){
            s.pop_back();
            K--;
        }
        s.push_back(c);
    }
    while(K--) s.pop_back();
}

void output(){
    for(char c : s) cout << c;
}

int main(){
    ios_base::sync_with_stdio(0); cin.tie(0);
    input();
    solve();
    output();
}

'문제 풀이 > 백준' 카테고리의 다른 글

BOJ 1477번: 휴게소 세우기  (0) 2024.02.11
BOJ 2933번: 미네랄  (0) 2024.01.31
BOJ 6549번: 히스토그램에서 가장 큰 직사각형  (1) 2024.01.30
BOJ 8980번: 택배  (0) 2024.01.25
BOJ 1963번: 소수 경로  (1) 2024.01.21
profile

danbibibi

@danbibibi

꿈을 꾸는 시간은 멈춰 있는 것이 아냐 두려워하지 마 멈추지 마 푸른 꿈속으로