처음에 조합을 이용해서 풀었는데 엄청난 시간초과가 났었다...
문제를 풀기 위해서는 숫자들을 하나씩 접근해야 했다
이미 저장된 숫자(max_num[-1])와 새롭게 저장될 숫자(num)를 비교하며 최댓값을 만들어 나갈 수 있었다
제거되어야 할 갯수인 k만큼 제거가 되지 않았을 경우도 생각해줘야 한다...
소스 코드
def solution(number, k):
max_num = []
for i, num in enumerate(number):
while max_num and max_num[-1] < num and k > 0:
max_num.pop()
k -= 1
if k == 0:
max_num += number[i:]
break
max_num.append(num)
max_num = max_num[:-k] if k > 0 else max_num
answer = "".join(max_num)
return answer
def solution(number, k):
stack = [number[0]]
for num in number[1:]:
while len(stack) > 0 and stack[-1] < num and k > 0:
k -= 1
stack.pop()
stack.append(num)
if k != 0:
stack = stack[:-k]
return ''.join(stack)