코딩테스트
[python] (백준) 크게 만들기
뇨롱
2023. 9. 25. 00:00
대회명/문제출처: 백준 크게 만들기 (2812)
https://www.acmicpc.net/problem/2812
유형: Greedy
<풀이방법>
1) 일단 무조건 Greedy 방법으로 풀었다.
앞에서 작은 숫자를 지워나가는 것이 낫기 때문 -> 뒤로 가면 아무리 수가 작아도 10의 거듭제곱만큼 크기를 늘릴 수 있다.
2) 풀다 보니, 조건 몇개를 추가하게 되었다.
첫번째, k가 다 소진되지 않을 경우는?
마지막에 k>0인 경우에 slicing 하는 방법으로 해결하였다.
두번째, k==0인 상태
k=0이라면 무조건 그냥 추가하고 continue 문 돌도록 바꾸었다.
n,k=map(int,input().split())
number=input()
stack=[]
for i in range(n):
if len(stack)==0 or k==0:
stack.append(number[i])
continue
while stack and stack[-1]<number[i] and k>0:
k-=1
stack.pop()
stack.append(number[i])
if k>0:
stack=stack[:-k]
print("".join(stack))