반응형
https://www.acmicpc.net/problem/2812
N, K = map(int, input().split())
nums = list(input())
k, stack = K, []
for i in range(N):
while k > 0 and stack and stack[-1] < nums[i]: # 앞에 숫자가 해당 숫자보다 작을 경우 지운다
stack.pop()
k -= 1
stack.append(nums[i])
print(''.join(stack[:N-K])) # K개를 지우지 못하는 경우를 위해 인덱스 슬라이싱을 해준다
1. 필요한 정보를 입력받고 필요한 변수를 생성한다. (스택을 사용해야 시간초과가 나지 않는다고 한다.)
2. 전체 숫자를 탐색하여 가장 큰 수를 구한다.
2-1. 앞의 숫자가 해당 숫자보다 작다면 앞의 숫자(stack[-1])를 지운다.
2-2. 해당 숫자를 스택에 추가한다.
3. 결과를 출력한다. 이 때 K를 지우지 못하는 경우(ex. 9421)를 위해 인덱스 슬라이싱(:[N-K])을 해준다.
반응형
'Algorithm > 백준' 카테고리의 다른 글
[백준/Python] 감시 (0) | 2021.12.20 |
---|---|
[백준/Python] 민겸 수 (0) | 2021.12.13 |
[백준/Python] 병든 나이트 (0) | 2021.12.02 |
[백준/Python] 공유기 설치 (0) | 2021.11.29 |
[백준/Python] 녹색 옷 입은 애가 젤다지? (0) | 2021.11.24 |