def solution(number, k): x = 0 remain = len(number) - k answer = [] while remain > 0: #1 x = len(number) - (remain -1) possible = number[:x] #2 max_num = max(possible) answer.append(max_num) #3 max_idx = number.index(max_num) number = number[(max_idx+1) : ] remain -= 1 return "".join(answer)
#1. remain(만들 숫자의 길이)만큼 가능한 숫자들을 possible에 넣어준다.
#2. possible에서 max_num(제일 큰 수)를 answer에 넣어준다.
#3. number에서 max_num의 index를 구한다음 max_num이후 숫자부터 슬라이싱 해준다.
문제점:
9999999...999999같은 케이스에 시간초과가 난다.
def solution(number, k): stack = [] for i in number: while stack and i > stack[-1]: if k > 0: stack.pop() k -= 1 else: break stack.append(i) . if k > 0: for i in range(k): stack.pop() . return "".join(stack)
이 방법을 이용하면 시간초과가 난 9999999...9999같은 케이스는 stack에 들어갔다가 k만큼만 다시 나오기 때문에 시간초과가 나지 않는다.