매 순간 최적의 해를 선택한다.
시간초과
from itertools import combinations
def solution(number, k):
maxnum = 9
c = combinations(number, len(number)-k)
for ci in c:
num = int(''.join(ci))
print(num)
if num > maxnum:
maxnum = num
answer = ''
return str(maxnum)
combination 함수는 O(2^N) 의 시간복잡도를 가지기 때문에 최대 길이에서 10초를 넘길 수 밖에 없습니다.
def solution(number, k):
result = []
for n in number:
while result and k>0 and result[-1] < n:
result.pop()
k -=1
result.append(n)
answer = result[:len(number)-k]
return ''.join(answer)
Stack
Last In First Out : 최근에 들어온 값을 가장 먼저 삭제한다.
List 문법
list.pop() : 맨 뒤에 값 제거
list.remove(x) : list에서 첫번째로 등장하는 x값 찾아 제거