プログラマ-大数の作成
質問する
これは,与えられた数から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個を削除し、文字列を返します.
Reference
この問題について(プログラマ-大数の作成), 我々は、より多くの情報をここで見つけました
https://velog.io/@deankang97/프로그래머스-큰-수-만들기
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
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)
Reference
この問題について(プログラマ-大数の作成), 我々は、より多くの情報をここで見つけました https://velog.io/@deankang97/프로그래머스-큰-수-만들기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol