728x90
이번 문제에서는 스택을 사용하여 문제를 풀어보았습니다. number의 자리수가 1,000,000자리이기 때문에 시간초과를 유의해야 합니다. 앞에서부터 차례대로 숫자를 stack에 저장하다가, 뒤에 나온 숫자가 저장된 숫자보다 클 시 pop해주고 뒤에 나온 숫자를 저장합니다. k개의 수를 제거할 수 있으므로 pop을 해줄 때마다 count를 해줍니다. 그 후, 만일 k가 양수라면 뒤에부터 k개만큼 제거하여 반환합니다.
솔루션
def solution(number, k):
answer = ''
idx=0
a=['-1']
num = len(number)
length=num-k
for i in range(len(number)):
while a and a[-1] < number[i] and k>0:
a.pop()
k-=1
a.append(number[i])
return ''.join(a[:-k])
728x90
'알고리즘' 카테고리의 다른 글
[python graph] 그래프 - 가장 먼 노드 LV.3 프로그래머스 (0) | 2021.06.07 |
---|---|
[python 그리디(탐욕법)] 구명보트 - 프로그래머스 (0) | 2021.06.04 |
[python 이분 탐색] 입국심사 프로그래머스 (0) | 2021.06.02 |
[그리디 파이썬] 프로그래머스 알고리즘 풀이 - 조이스틱 (0) | 2021.05.25 |
[힙 python] 프로그래머스 디스크 컨드롤러 (0) | 2021.05.23 |