스택 활용하기 (파이썬에서는 리스트로 가능)
k가 0보다 클 때까지 반복
스택 마지막 값 < i 일 때 스택 pop, k--
그렇지 않은 경우는 answer 배열에 i 값 넣기
최종 리턴 값은 전체 길이 - k 까지의 문자열 출력
def solution(number, k):
answer = []
for i in number:
while k > 0 and answer and answer[-1] < i:
# 스택 마지막 값이 i 보다 작을 때
answer.pop()
k -= 1
answer.append(i)
return ''.join(answer[:len(answer)-k])
+ 23.10.26 추가
위에 코드로 하게 되면 추가 테스트 케이스인 12번에서 계속 실패가 뜬다.
12번 테케는 k가 소진이 안 되고 종료될 때이다.
예외 테스트 케이스)
"4321", 1, "431"
이렇게 k가 소진이 안 되었을 때 k값이 무시되고 "4321"이 뜨게 된다.
def solution(number, k):
answer = []
for i in number:
while k > 0 and answer and answer[-1] < i:
answer.pop()
k -= 1
answer.append(i)
while k:
answer.pop()
k -= 1
answer = ''.join(answer)
return answer
따라서 k를 모두 소진시킬 수 있는 반복문을 만들어 최종 answer를 출력해야 한다.