대회명/문제출처: 백준 크게 만들기 (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))
'코딩테스트' 카테고리의 다른 글
[python] (백준) 오큰수 (0) | 2023.09.24 |
---|---|
[python] (프로그래머스) 택배 배달과 수거하기 (0) | 2023.09.17 |
[python] (프로그래머스) 미로 탈출 명령어 (1) | 2023.08.28 |
[C++] (프로그래머스) 폰켓몬 (0) | 2023.03.03 |
[C++] (프로그래머스) 정수 삼각형 (0) | 2022.03.19 |