백준 - [2812] 크게 만들기

Dean_Kang·2021년 7월 21일
0

백준

목록 보기
7/36

문제

N자리 숫자가 주어졌을 때, 여기서 숫자 K개를 지워서 얻을 수 있는 가장 큰 수를 구하는 프로그램을 작성하시오.

예시

4 2
1924 -> 94

코드

n, k = map(int, input().split())
num = input()
stack = list()
cnt = 0
stack.append(int(num[0]))

for i in range(1, len(num)):
    while stack and stack[-1] < int(num[i]) and cnt < k:
        stack.pop()
        cnt += 1
    stack.append(int(num[i]))

while cnt < k:
    stack.pop()
    cnt += 1

for a in stack:
    print(a, end='')

설명

입력된 수의 가장 큰 자리 수 부터 스택에 저장하면서 i번째의 수가 스택의 최상단의 수보다 크지 않을 때까지 최대 k번 반복하고 아니라면 스택에 저장해준다.

반복문이 끝나고 아직 빼야하는 숫자가 남아 있을경우 마저 pop해주고 스택에 남아있는 숫자들을 출력해준다.

profile
for the goal

0개의 댓글