문제출처 : https://www.acmicpc.net/problem/2812
code
#include <iostream>
using namespace std;
char arr[500001];
long stk[500001];
int main()
{
int N, K, index=0;
cin >> N >> K;
cin >> arr;
int J = N - K;
for (int i = 0; i < N; i++)
{
if (index == 0)
{
stk[index++] = arr[i]-48;
}
else
{
while (K > 0 && index > 0)
{
if (stk[index - 1] < arr[i]-48)
{
index--;
K--;
}
else
break;
}
stk[index++] = arr[i]-48;
}
}
for (int i = 0; i < J; i++)
cout << stk[i];
return 0;
}
알고리즘은 쉬운데 구현하는데 애를먹었다.
왠지모르겠는데 stack을쓰니까 자꾸 에러가 나서 일반 배열로 스택을 구현했더니 예제는 다맞는데 자꾸 제출하니까 틀렸다고 나와서 엄청고민하다가 혹시나 싶어서 문자열배열의 크기를 1늘려줬더니 바로통과했다....
현타 씨게오네..