[알고리즘/백준] 2812번 : 크게 만들기(python)

유현민·2022년 9월 5일
0

알고리즘

목록 보기
245/253

스택을 이용해서 푸는 문제이다.

맨 왼쪽에 가장 큰 수가 와야 한다. for 문으로 넣으면 맨 왼쪽에 큰 수가 온다는 보장을 못함.
따라서 일단 순회하며 다 넣고 while로 지워줘야 한다.
마지막 출력은 맨 끝까지 다 출력하면 자릿수를 넘는 게 존재하기 때문에 N-K로 슬라이싱 해준다.

N, K = map(int, input().split())
n = K
a = list(map(int, input()))
stack = list()
for i in a:
    while stack and stack[-1] < i and n > 0:
        stack.pop()
        n -= 1
    stack.append(i)
print(*stack[:N-K], sep='')
profile
smilegate megaport infra

0개의 댓글