danbibibi
article thumbnail

1. 문제

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

 

2812번: 크게 만들기

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

www.acmicpc.net

 

2. 풀이

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

<cpp />
#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

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