[Python] 백준 / gold / 2812번 (크게 만들기)

김상우·2021년 10월 4일
0

문제 링크 : https://www.acmicpc.net/problem/2812

그리디 알고리즘 문제이다.
스택 자료구조에 수 들을 하나씩 담아나간다. 그러다 큰 수를 만나면, 스택에 이미 담겨있던 작은 수들을 pop해나간다. K를 다 사용하지 않았을 시 마지막 숫자에서 빼주면 된다.

while문을 이용해 작은 수들을 pop한다.

정답 코드

import sys
N, K = map(int, sys.stdin.readline().split())
number = sys.stdin.readline().strip()

stack = [number[0]]
for i in range(1,len(number)):
    if K == 0:
        stack.append(number[i:])
        break

    if stack[-1] >= number[i]:
        stack.append(number[i])
    else:
        while stack and K > 0 and stack[-1] < number[i]:
            stack.pop()
            K -= 1
        stack.append(number[i])

if K > 0:
    while K > 0:
        stack.pop()
        K -= 1

print(''.join(stack))
profile
안녕하세요, iOS 와 알고리즘에 대한 글을 씁니다.

0개의 댓글