스택이란?
입구와 출구가 같은 구덩이와 같음
따라서 조건에 맞게 차곡차곡 쌓아야 됨
입구와 출구가 같기 때문에
만약 조건에 안맞으면 구덩이에서 가장 위에 있는 것을 빼내고(pop)
해당 값을 마저 집어넣음(append)
가장 큰 수
선생님은 현수에게 숫자 하나를 주고, 해당 숫자의 자릿수들 중 m개의 숫자를 제거하
여 가장 큰 수를 만들라고 했습니다. 여러분이 현수를 도와주세요.(단 숫자의 순서는
유지해야 합니다)
만약 5276823 이 주어지고 3개의 자릿수를 제거한다면
7823이 가장 큰 숫자가 됩니다.
▣ 입력설명
첫째 줄에 숫자(길이는 1000을 넘지 않습니다)와 제가해야할 자릿수의 개수가 주어집니다.
▣ 출력설명
가장 큰 수를 출력합니다.
▣ 입력예제 1
5276823 3
▣ 출력예제 1
7823
▣ 입력예제 2
9977252641 5
▣ 출력예제 2
99776
강의 답안
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)
-for문 안의 while문
for문은 횟수에 따라 반복하는 코드 vs while문은 조건이 충족될 때까지 반복하는 코드(독종)
for x in num:
while stack and m>0 and stack[-1]<x:
stack.pop()
m-=1
stack.append(x)
stack을 비우는 코드를 while로 작성
stack의 요소들이 x보다 작지 않을 때까지 비워내려고 while 작성 &기타 등등의 조건
5.3 후위 표기식 만들기(스택) (0) | 2021.07.22 |
---|---|
5.2 쇠막대기(스택) (0) | 2021.07.22 |
4.4 마구간 정하기 (결정 알고리즘) (0) | 2021.07.15 |
4.3 뮤직비디오(결정 알고리즘) (0) | 2021.07.14 |
4.2 랜선 자르기(결정 알고리즘) (0) | 2021.07.13 |
댓글 영역