파이썬 알고리즘-32 (스택) 가장 큰 수

jiffydev·2020년 9월 4일
0

Algorithm

목록 보기
34/134
post-thumbnail

32.가장 큰 수
선생님은 현수에게 숫자 하나를 주고, 해당 숫자의 자릿수들 중 m개의 숫자를 제거하
여 가장 큰 수를 만들라고 했습니다. 여러분이 현수를 도와주세요.(단 숫자의 순서는
유지해야 합니다)
만약 5276823 이 주어지고 3개의 자릿수를 제거한다면
7823이 가장 큰 숫자가 됩니다.

▣ 입력설명
첫째 줄에 숫자(길이는 1000을 넘지 않습니다)와 제가해야할 자릿수의 개수가 주어집니다.

▣ 출력설명
가장 큰 수를 출력합니다.

▣ 입력예제 1
5276823 3

▣ 출력예제 1
7823

▣ 입력예제 2
9977252641 5

▣ 출력예제 2
99776

내 코드

스택을 사용해야 된다는건 알겠는데 구현이 안된다.

풀이

num, m=map(int, input().split())
num=list(map(int, str(num)))
stack=[]
for x in num:
    while stack and m>0 and stack[-1]<x:
        stack.pop()
        m-=1
    stack.append(x)
if m!=0:
    stack=stack[:-m]
res=''.join(map(str, stack))
print(res)

반성점

  • 내 대가리에는 똥만 들었다.

배운 것

  • 스택에서 자신보다 앞에 있는 것들을 차례로 지울 때는 while문을 사용한다.
profile
잘 & 열심히 살고싶은 개발자

0개의 댓글