파이썬 알고리즘-92 (프로그래머스) 큰 수 만들기

jiffydev·2021년 1월 8일
0

Algorithm

목록 보기
99/134

코드

from itertools import combinations
def solution(number,k):
    answer=''
    max_num=0
    lst=list(combinations(number,len(number)-k))
    for i in lst:
        max_num=max(max_num,int(''.join(i)))
    answer=str(max_num)
    return answer
    
 # 틀린 풀이. 시간초과

다른 사람의 풀이

def solution(number, k):
    # 빈 스택 생성
    stack = []
    for num in number:
        # 스택의 top이 number의 다음 숫자보다 작으면 pop & k-1 
        while stack and stack[-1] < num and k > 0:
            k -= 1
            stack.pop()
        stack.append(num)
    # k개까지 제거되지 않았을 경우에는 그만큼 내림차순 정렬된 것이므로
    # 뒤에서부터 잘라도 된다
    if k != 0:
        stack = stack[:-k]
    return ''.join(stack)
profile
잘 & 열심히 살고싶은 개발자

0개의 댓글