반응형
코드
n,k = map(int, input().split())
num = int(input())
n_list = list(map(int,str(num))) # 숫자 분리할 때 먼저 문자열로 바꾼 후 분리
stack = []
cnt = 0
stack.append(n_list[0])
for i in range(1,n):
while stack and n_list[i] > stack[-1]:
if cnt == k:
break
stack.pop()
cnt+=1
stack.append(n_list[i])
while cnt != k:
stack.pop()
cnt+=1
for i in stack:
print(i,end='')
설명
숫자를 한 자릿수 씩 분리하려면 먼저 그 수를 문자열로 바꿔준 후 리스트에 넣어주면 된다.
스택을 이용해서 만약 가장 위에 있는 수가 넣으려는 수보다 작을 경우 pop을 해주고 cnt를 증가시켜줬고, 클 경우 그냥 그 수를 스택에 push 해줬다.
7 5
9929191
99
처음에는 위의 반례를 만족하지 못했다. cnt가 k가 되지 않았는데도 종료되어서 마지막에 while문을 추가해줬다.
반응형
'알고리즘 > 그리디' 카테고리의 다른 글
[백준][Python] 1715번 카드 정렬하기 (0) | 2022.05.04 |
---|---|
[백준][Python] 13975번 파일 합치기 3 (0) | 2022.05.03 |
[백준][Python] 2141번 우체국 (0) | 2022.04.29 |
[백준][Python] 1092번 배 (0) | 2022.04.28 |
[백준][Python] 19598번 최소 회의실 개수 (0) | 2022.04.27 |
댓글