728x90
BOJ 2812 크게 만들기
문제
N자리 숫자가 주어졌을 때, 여기서 숫자 K개를 지워서 얻을 수 있는 가장 큰 수를 구하는 프로그램을 작성하시오.
시간 제한 : 1 초
메모리 제한 : 128 MB
입력
첫째 줄에 N과 K가 주어진다. (1 ≤ K < N ≤ 500,000)
둘째 줄에 N자리 숫자가 주어진다. 이 수는 0으로 시작하지 않는다.
출력
입력으로 주어진 숫자에서 K개를 지웠을 때 얻을 수 있는 가장 큰 수를 출력한다.
예제 입력 1
4 2
1924
예제 출력 1
94
예제 입력 2
7 3
1231234
예제 출력 2
3234
예제 입력 3
10 4
4177252841
예제 출력 3
775841
풀이
n, k = map(int, input().split())
num = list(input())
cnt = k
stack = []
for i in range(n):
while cnt and stack:
if stack[-1] < num[i]:
stack.pop()
cnt -= 1
else:
break
stack.append(num[i])
print(''.join(stack[:n-k]))
728x90
'Algorithm(Python) > 스택' 카테고리의 다른 글
[Algorithm] 백준 BOJ 17299 오등큰수(python 파이썬) (0) | 2022.10.07 |
---|---|
[Algorithm] 백준 BOJ 9935 문자열 폭발(python 파이썬) (1) | 2022.10.06 |
[Algorithm] 백준 BOJ 17608 막대기(python 파이썬) (0) | 2022.09.12 |
[Algorithm] 백준 BOJ 3986 좋은 단어(python 파이썬) (0) | 2022.09.11 |
[Algorithm] 백준 BOJ 2493 탑(python 파이썬) (0) | 2022.09.10 |