728x90
https://school.programmers.co.kr/learn/courses/30/lessons/42883#
- 풀이
- 조합으로 풀었더니 시간 초과
- 최적의 해를 찾는 탐욕법
- 가장 큰 수를 찾는 것이므로 n자리 숫자를 최대한 크게 만들어주기
- 이전 숫자가 작으면 제거
- 숫자가 내림차순이어서 stack에 다 들어가는 경우!!!
- 이 부분때문에 테스트케이스 12번이 계속 틀렸음
- '654321'일 때 k가 1인 경우
- 즉, k개 제거를 못한 경우
- stack에서 뒤에서 k개를 제거하면 된다
- stack[:-k]
- 이 부분때문에 테스트케이스 12번이 계속 틀렸음
def solution(number, k):
stack = []
for num in number:
while stack and stack[-1] < num and k > 0:
k -= 1
stack.pop()
stack.append(num)
# 제거를 다 못했다면
if k > 0:
stack = stack[:-k]
return ''.join(stack)
728x90
반응형
'TIL - 프로그래밍 > Python 알고리즘' 카테고리의 다른 글
[프로그래머스] 불량 사용자 - Python (0) | 2023.03.02 |
---|---|
[프로그래머스] 삼각 달팽이 - Python (0) | 2023.03.02 |
[230228] 소수 구하기(에라토스테네스의 체) - Python (0) | 2023.02.28 |
[230228] heapq (추가, 삭제, 리스트를 heap으로 변환) - Python (0) | 2023.02.28 |
[프로그래머스] 야근 지수 - Python (0) | 2023.02.28 |
댓글