Part4.1データ構造(スタック、キュー、ハッシュ、hip)最大数


大数
私が思うコード
汚くてたまらない.解決できない...私は前の2種類を知っていますが、その後どのように数量を加えるか分かりませんか?
m回の重複数を見つけて、その後リストを合わせればいいのですが、それは...ちょっと...
スタックは?
これはLIFO Last In First Outを意味する.
リストで順番に追加したコンテンツをpopで入れること自体がスタックです.
9 9 9 9 7 2 5 6 4 2の場合
stringをlistにする
最初の数字9はスタックに入ります.
9
次の9は大きいほう、小さいほう
9 9
次の7は大きいほう、小さいほう
9 9 7
次は七つ大きいのを入れて、小さいのを出して
9 9 7 7
次の2は自分より大きいので外してから入れます
9 9 9 7 7(2消去)
次の5つは、自分より大きくなったら外してから入れます
9 9 9 7 7(5消去)
...
9 9 7 7 6 4 1
このとき、削除する総数が5のうち3であれば、残りの2はそのまま削除されます.
9 9 7 7 6
先生コード
#1. Alt+W+N 입력하고 Alt+W+V :

import sys
#from collections import deque # deque import
sys.stdin = open("input.txt", "rt")

num, m = map(int,input().split())
num = list(map(int,str(num))) #원소를 string처리 후 리스트로 만들어준다. 그럼 하나하나 접근을 하고 int화 시켜서 리스트화 시킨다
stack = []

for x in num:
    while stack and m>0 and stack[-1]<x:# stack이 비어있지 않을 때, 스택의 맨 뒷 자리가 x보다(현재 나보다) 작으면 끄집어낸다.
        stack.pop()
        m-=1
    stack.append(x)
    #다 지우지 못한 경우
if m !=0:
    stack = stack[:-m] #맨 뒤를 잘라준다.
    #for문 돌면서 찍어도 되지만,
res=''.join(map(str,stack))
    #조인 활용해서 string을 join시켜 str을 변환시켜서 res가 str화 되어 붙여주기가 되어 나온다.
print(res)