문제
풀이
def solution(number, k):
answer = ''
result = [number[0]]
idx = 1
while k > 0:
if idx == (len(number)):
result = result[:-k]
break
while result and number[idx] > result[-1] and k > 0:
k -= 1
result.pop()
result.append(number[idx])
idx += 1
if k == 0:
for i in range(idx, len(number)):
result.append(number[i])
return "".join(result)
앞자리 수가 커야 가장 큰 수가 만들어지기 때문에 수를 하나씩 추가하며 이전 수보다 큰 수가 들어오면 이전 수를 제거하는 로직이다.
idx가 len(number)와 같아졌을 때 즉, 76543.. 같이 작아지는 형태인데 k개만큼 빼지 않았을 때 마지막 수를 잘라주는 과정을 빼먹어 12번 케이스에서 실패했어서 수정했다.
'알고리즘 스터디' 카테고리의 다른 글
[프로그래머스] 정렬 3. H-Index (0) | 2021.02.28 |
---|---|
[프로그래머스] 스택/큐 1. 다리를 지나는 트럭 (0) | 2021.02.28 |
[프로그래머스] 탐욕법 2. 조이스틱 (0) | 2021.02.24 |
[프로그래머스] 이분탐색 1. 입국심사 (0) | 2021.02.21 |
[프로그래머스] 깊이/너비우선탐색 1. 타겟 넘버 (0) | 2021.02.15 |