[프로그래머스] 탐욕법 - 큰 수 만들기 (파이썬) - Statssy


코딩테스트 연습 - 탐욕법 - 큰 수 만들기 (파이썬)

코딩테스트 연습 - 탐욕법 - 큰 수 만들기를 풀어본다.

  • 내 코드는 일단 시간초과가 3개가 나온다. 왜냐하면 number가 1,000,000자리인데 O(n^2) 복잡도가 나오기 때문인거 같다.
  • 잘 푼 사람을 보니 역시 pop으로 풀었다. stack에 채우다가 큰수가 나오면 이전 stack을 지우는 형식이다.
  • 최대한 stack을 이용한 코드를 짜야 한다. 오늘도 열심히

내 코드

def solution(number, k):
    ans = []
    number_list = [i for i in number]
    n = len(number_list)
    i = 0
    while True:
        temp = number_list[:-n+k+i+1] if (-n+k+i+1) < 0 else number_list
        for j in range(len(temp)):
            if temp[j] == max(temp):
                ans.append(temp[j])
                number_list = number_list[j+1:]
                i += 1
                break
        if len(ans) == n - k:
            break
    answer = ''.join(ans)

    return answer

잘 푼 다른 사람 코드

def solution(number, k):
    stack = [number[0]]
    for num in number[1:]:
        while len(stack) > 0 and stack[-1] < num and k > 0:
            k -= 1
            stack.pop()
        stack.append(num)
    if k != 0:
        stack = stack[:-k]
    return ''.join(stack)





© 2018. by statssy

Powered by statssy