:pencil2:코드

import sys
sys.stdin = open("input.txt")
input = sys.stdin.readline

n, k = map(int, input().split())
num = list(map(int, input().rstrip()))
stack = [num[0]]
for i in range(1, n):
    while stack and num[i] > stack[-1] and k:
        stack.pop()
        k -= 1
    stack.append(num[i])

while k:
    stack.pop()
    k -= 1
for x in stack:
    print(x, end="")

:star:풀이

스택으로 푼 문제이다.

처음에 주어진 숫자의 첫번째 수를 스택에 넣어주고 다음 수와 스택에 있는 수들을 비교하면서 지울 수 있는 기회(k)가 남아있고 스택의 마지막 수가 현재 수보다 작다면 pop해준다.

처음에 틀렸었다! 이유는 k가 남아있는데 작은 숫자들이 뒤에 있어서 k를 다 쓰지 못하는 경우를 고려를 못해줬었다.

k가 0이 될때까지 스택에서 숫자들을 제거함으로써 해결했다!

댓글남기기