문제 : https://programmers.co.kr/learn/courses/30/lessons/42883
사용한 방법
1. 최소한 첫번째 자리는 number 문자열에서 k번째에서 시작해야 함 -> 그래야 len-k 자리의 숫자 만들기 가능
2. 뒤이어 다음 자리 숫자들은 최소한 k+1, k+2 ... 번째 안에서 결정해야 함
3. 이렇게 최소한 이 안에 결정되야 한다 하는 자리수를 limit에 저장.
4. i가 limit이 될 때마다 answer에 숫자 업데이트 하고 max 초기화. limit은 +=1 해주기. i는 현재 자리수에서 채택된 최댓값의 idx 다음 것부터 탐색하도록 한다.
1차 시도에서는 테스트케이스 8, 10에서 시간초과
예외처리를 안해줘서 시간초과 남.
시간 초과를 줄이는 중요 포인트: 예외처리 해주기
def solution(number, k):
answer = ''
lst = [int(n) for n in number]
max_num = 0
max_idx = 0
i = 0
limit = k
while len(answer) != len(number)-k:
if lst[i] > max_num:
max_num = lst[i]
max_idx = i
if i == limit or max_num == 9:
answer += str(max_num)
i = max_idx + 1
max_num = 0
limit += 1
else:
i += 1
return answer