문제 설명 및 제한사항
아이디어 및 해결 방법
코드
def solution(number, k):
# 맨 앞의 k+1개 숫자를 보고, 그 중 가장 큰 숫자를 취합니다.
# 이를 위해 숫자를 몇 개 버려야 하는지를 계산합니다.
# 그 뒤의 수부터 동일하게, 버릴 수 있는 숫자가 없어질 때까지 반복합니다.
n2idx = {n:i for i, n in enumerate(number)}
answer = []
while k > 0:
found9 = False
# 9를 만나면 바로 처리합니다.
for i in range(k+1):
if number[i] == '9':
answer.append('9')
k = k - i
number = number[i+1:]
found9 = True
break
if found9:
continue
s = number[:k+1]
mx = max(s)
answer.append(mx)
idx = s.index(mx)
k = k - idx
number = number[idx + 1:]
if len(number) == k:
return ''.join(answer)
if number:
answer.append(number)
return ''.join(answer)
Python
복사
출처
프로그래머스 코딩테스트 연습 https://school.programmers.co.kr/learn/challenges