大数
8551 ワード
作成日:2022年1月24日午後5:23
アイデア から与えられた数字のリストから、前から1つずつ取り出してresに入れ、resに入れる新しい数字が既存のresの最後の数字より大きい場合は、その数字(res[1])を削除してresに入れ続ける. は、私が実装したコードと同じ動作原理ですが、簡略化されたコードです.
インプリメンテーションコード
# 가장 큰 수
import sys
sys.stdin = open("input2.txt" ,"rt")
n, m = map(int, input().split())
cnt = 0
res = []
n = list(str(n))
n = list(map(int, n))
while len(n) != 0:
a = n.pop(0)
if len(res) == 0:
res.append(a)
else:
while len(res) != 0:
if res[-1] < a and cnt < m:
res.pop()
cnt += 1
else:
break
res.append(a)
if cnt < m:
for _ in range(m-cnt):
res.pop()
for x in res:
print(x, end='')
模範解答
import sys
sys.stdin=open("input.txt", "rt")
num, m=map(int, input().split())
num=list(map(int, str(num)))
stack=[]
for x in num:
while stack and m>0 and stack[-1]<x:
stack.pop()
m-=1
stack.append(x)
if m!=0:
stack=stack[:-m]
res=''.join(map(str, stack))
print(res)
Reference
この問題について(大数), 我々は、より多くの情報をここで見つけました https://velog.io/@lsj8706/가장-큰-수テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol