문제 설명
어떤 숫자에서 k개의 수를 제거했을 때 얻을 수 있는 가장 큰 숫자를 구하려 합니다.
예를 들어, 숫자 1924에서 수 두 개를 제거하면 [19, 12, 14, 92, 94, 24] 를 만들 수 있습니다. 이 중 가장 큰 숫자는 94 입니다.
문자열 형식으로 숫자 number와 제거할 수의 개수 k가 solution 함수의 매개변수로 주어집니다. number에서 k 개의 수를 제거했을 때 만들 수 있는 수 중 가장 큰 숫자를 문자열 형태로 return 하도록 solution 함수를 완성하세요.
제한 조건
- number는 2자리 이상, 1,000,000자리 이하인 숫자입니다.
- k는 1 이상 number의 자릿수 미만인 자연수입니다.
입출력 예
제출
def solution(number, k):
answer = []
number = list(number)
for i in range(len(number)):
if len(answer) == 0:
answer.append(number[i])
else:
while answer and answer[-1] < number[i] and k != 0:
answer.pop(-1)
k-=1
answer.append(number[i])
answer = "".join(answer)
if k > 0:
return answer[:len(number)-k]
return answer
💬 후기
number 숫자가 answer 숫자보다 크면 작은 숫자가 pop되고 큰 숫자가 추가되는 방법으로 접근해보았다.
number를 반복문을 통해 순회하면서 비어있으면 그대로 추가되고 작으면 삭제 ~ 크면 추가 ~
그럼 최종적으로 가장 큰 answer가 출력된다!!
'알고리즘 문제' 카테고리의 다른 글
[Python] 기능개발(스택/큐) (0) | 2023.11.29 |
---|---|
[Python] 조이스틱(그리디) (1) | 2023.11.27 |
[Python] 피로도(브루트포스) (1) | 2023.11.27 |
[Python] 주식가격(스택/큐) (2) | 2023.11.26 |
[Python] 다리를 지나는 트럭(스택/큐) (1) | 2023.11.24 |