알고리즘/백준

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;

}

반응형