programmers.co.kr/learn/courses/30/lessons/42883
코딩테스트 연습 - 큰 수 만들기
programmers.co.kr
def solution(number, k):
stack = [number[0]]
for n in number[1:]:
while stack and stack[-1] < n and k > 0:
stack.pop()
k -= 1
stack.append(n)
if k != 0:
stack = stack[:-k]
return ''.join(stack)
스택에 number 0번째 수 삽입.
1번째 수 부터 for문을 돈다. k(제거 횟수)가 남아있는 한, stack에 n(현재 요소)보다 큰 요소가 있어선 안된다.
따라서 n이 stack[-1] 보다 크고 k가 남아있으면, stack.pop(), k -= 1. 그리고 while문을 나올 때 까지 반복.
while문을 나오면 stack에 n 삽입. for 문이 끝난 후에도 k가 남아있으면 남아있는 k만큼 뒤에서 삭제.
마지막으로 문자열 리스트를 문자열로 만들기 위해 ''.join(stack)
'PS > 프로그래머스' 카테고리의 다른 글
[프로그래머스-탐욕법] 섬 연결하기_파이썬(최소신장트리, 크루스칼 알고리즘) (0) | 2021.03.21 |
---|---|
[프로그래머스-탐욕법] 구명보트_파이썬 (0) | 2021.03.21 |
[프로그래머스-탐욕법] 조이스틱_파이썬 ❌❌ (0) | 2021.03.20 |
[프로그래머스-탐욕법] 체육복_파이썬 (0) | 2021.03.19 |
[프로그래머스-완전탐색] 카펫_파이썬 ❌⭕ (0) | 2021.03.19 |