스터디/알고리즘
큰 수 만들기
세졍
2024. 5. 6. 17:22
문제이해
문자열로되어있는 수에서 k개만큼 숫자를제거했을때 가장 큰수를 출력하라
대신 앞에서부터 큰수가 되어야함 (만들수있는 가장큰수가 X)
스택
1. number의 배열을 돌면서 스택에 담고 그다음 숫자를 넣을때 크기비교해서 더큰 수면 pop하고 그수를 넣는다
2. pop하면 그 수는 버린거이므로 제거한거이다 -> k감소하기
def solution(number, k):
stack = []
for n in number:
while k> 0 and stack and stack[-1] < n:
stack.pop()
k -= 1
stack.append(n)
if k>0:
stack = stack[:-1]
return ''.join(stack)
if k > 0:
stack = stack[:-k]
return ''.join(stack)
****예외처리******
number = "98989"
k = 3
답이 999나옴 (99나와야하는데)