2812. 크게만들기

jp·2021년 9월 21일
0

baekjoon

목록 보기
2/15

문제

코드

import sys
input = sys.stdin.readline
N, K = map(int, input().split())
num = list(input())
s, k = [], K
for i in range(N):
    while k>0 and s and s[-1] < num[i]:
        s.pop()
        k -= 1
    s.append(num[i])
print(''.join(s[:N-K]))

풀이

stack을 이용한 풀이
바꿀 횟수가 남아있고, 스택에 뭔가 있고, 스택에 들어있는 것이 앞으로 들어갈것 보다 작으면 반복문 실행
스택에 들어갈게 더 작으므로 pop해주고 새로운 큰 숫자를 넣어준다
반복문에 들어가지 않으면 숫자를 다 채워주고 출력을 요하는 자리수만큼 만 출력해줌

profile
응애 개발자지망생이 알고리즘에 고통받는 중

0개의 댓글