알고리즘/백준
2812>크게 만들기
Diademata
2017. 12. 24. 14:03
반응형
https://www.acmicpc.net/problem/2812
그리디 알고리즘
문제 N자리 숫자가 주어졌을 때, 여기서 숫자 K개를 지워서 얻을 수 있는 가장 큰 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 K가 주어진다. (1 ≤ K < N ≤ 500,000) 둘째 줄에 N자리 숫자가 주어진다. 이 수는 0으로 시작하지 않는다. |
code>>
반례 78654321 이 부분때문에 자꾸 틀림.
#include<stdio.h>
#include<iostream>
#include<string>
using namespace std;
int main()
{
int N, K;
string input = "";
scanf("%d %d", &N, &K);
cin >> input;
string an;
an = input[0];
for (int i = 1; i < input.size(); i++)
{
while (!an.empty() && an.back() < input[i] && K >0)
{
K--;
an.pop_back();
}
an.push_back(input[i]);
}
while (K > 0)
{
K--;
an.pop_back();
}
printf("%s\n", an.c_str());
return 0;
}
반응형