プログラマ-大数の作成



質問する


これは,与えられた数から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個を削除し、文字列を返します.