白駿2812号-拡大

10629 ワード

白駿2812号-大作<グレディ>



マイコード)
n,k =map(int,input().split())

num = list(map(int,input()))

len_result = len(num) - k

while len(num) > len_result:

  res_min = min(num)
  num.remove(res_min)

  
num = str(num)
print(''.join(num)
コメント)結果は失敗でしたハハハ.今日も開発者になれません.
まず解けたタイムアウトしただけで、グーグルで検索したところ、スタックを使わないとタイムアウトするに違いないことがわかりました.スタックで解きます
このような状況で、今日はいくつかのことを学びました.
import sys

#1
num = sys.stdin.readline()

#2
num = list(map(int,input()))

#3
num = list(map(int,sys.stdin.readline().strip()))

#4
n,k =map(int,sys.stdin.readline().split())

#5
string = '345'
string = list(string)
>>> ['3','4','5']
sys.stdin.readlineの速度はinput()内蔵関数よりも速いため、coteでよく使われる.しかし、ここには私の知らない事実があります.すなわち、readlineは文字列として入力され、後に開行文字が含まれている.(スペースを含む)なのでsplit()の場合は、スペースをすべて削除して要素のみを抽出しますが、入力値が1924でない場合は、2回目にinputではなくreadlineを使用すると、文字の書き換えでエラーが発生する場合があります.(intに変換できません).すなわちstrip()を用いて接尾辞3を削除すべきである.5番は文字列がリストかどうか分からないだけです.コリンだから...これはハチミツです.使いましょう.
回答コード)
import sys

n,k =map(int,sys.stdin.readline().split())

num = list(map(int,sys.stdin.readline().strip()))

result = []
count = k

for i in range(n):

  while count > 0 and result:

    if result[len(result)-1] < num[i]:
      result.pop()
      count-=1
    else:
      break

  result.append(num[i])

#1

result = list(map(str,result))
result = ''.join(result)
print(result)

#2
result = list(map(str,result))
for i in range(n-k):
  print(result[i],end= '')
コメント)1番と2番に分けられた理由は私から見れば同じで、なぜか2回しか殴られなかったので、自殺しようとした.まずは白俊の質問に….いいでしょう…?今日も2時間のランプの中でこれで1時間半溶けました.そんしつこれはこれから役に立つ問題だと思います.