프로그래머스 - 큰 수 만들기

Dean_Kang·2021년 7월 12일
0

프로그래머스

목록 보기
17/21

문제

주어진 숫자 number에서 k개의 숫자를 빼서 만들 수 있는 숫자 중에 가장 큰 수를 반환하는 문제다. 탐욕법 방식으로 스택을 활용해 풀면된다.

코드

def solution(number, k):
    answer = list()
    answer.append(number[0])
    idx= 1
    while idx < len(number):
        if len(answer) != 0 and answer[-1] < number[idx] and k >0:
            answer.pop()
            k -= 1
        else:
            answer.append(number[idx])
            idx += 1
    if k != 0:
        answer = answer[:-k]

    return ''.join(i for i in answer)

처음에 먼저 스택에 number의 첫번째 숫자를 넣는다 그리고 number의 그 다음 숫자가 스택에 가장 마지막 값 보다 작다면 pop시키고 k의 갯수를 감소시킨다. k의 숫자가 0이거나 스택의 마지막 값보다 작은 숫자라면 스택에 저장한다. 반복문이 종료된 후 k가 0이 아니라면 맨 뒷자리를 k개 만큼 삭제 한 후 문자열로 반환해주면 된다.

profile
for the goal

0개의 댓글