👨‍🏫ps/❄️프로그래머스

[프로그래머스] 큰 수 만들기 [python]

peacekim 2023. 3. 19. 23:02
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/42883

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제

stack를 사용해서 풀었다.

stack에 있는 값이 현재 값보다 작다면 가장 최근에 들어간 값을 제거했고 다시 그 앞자리수를 비교했다.

 

코드

def solution(number, k):
    answer = ''
    stack = []
    popNum = 0
    idx = 0
    while idx < len(number) and popNum < k:
        # stack 값이 없다면 현재 값을 stack 넣기
        if len(stack) == 0: 
            stack.append(number[idx])
        else: 
            while len(stack) > 0 and stack[-1] < number[idx] and popNum < k:
                if stack[-1] < number[idx]:
                    stack.pop(-1)
                    popNum += 1
            stack.append(number[idx])
        idx += 1
        
    while popNum < k:
        stack.pop(-1)
        popNum += 1
        
    if idx < len(number):
        stack.extend(number[idx: ])
    answer = ''.join(stack)
        
    return answer
"""
k개의 수를 제거했을 때 얻을 수 있는 가장 큰 숫자
1924에서 두 개를 제거하면 가장 큰수가 높은 자릿수를 가지고 있어야 됨
stack 사용해서 풀면됨
"""
반응형