Algorithm/Python
Stack
Code Art
2024. 4. 3. 18:36
후입선출 구조 (Last In First Out) - 나중에 들어간게 먼저 나가는 구조
# 스택을 만드는 방법
stack = [] 파이썬에서는 리스트가 동적 배열로 구성되어있어서 스택의 기능을 모두 지원한다.
# 기본 메소드
stack.append(x) : x를 넣기
stack.pop(x) : x를 뺴기
# 스택을 활용한 Greedy 1.https://school.programmers.co.kr/learn/courses/30/lessons/42883
def solution(number, k):
stack = [] # 결과를 저장할 스택
for num in number:
print("현재 숫자:", num)
print("이전 스택 상태:", stack)
# 스택이 비어있지 않고, k가 0보다 크며, 스택의 마지막 원소가 현재 숫자보다 작은 경우
while stack and k > 0 and stack[-1] < num:
print("스택의 마지막 원소가 현재 숫자보다 작으므로 제거:", stack[-1])
stack.pop() # 스택의 마지막 원소를 제거
k -= 1 # 제거할 숫자 개수 감소
print("남은 제거 가능 횟수:", k)
print("스택 상태:", stack)
stack.append(num) # 현재 숫자를 스택에 추가
print("스택에 현재 숫자 추가:", num)
print("스택 상태:", stack)
# 만약 k개의 숫자를 모두 제거하지 못했다면, 마지막 k개의 숫자를 제거
stack = stack[:-k] if k > 0 else stack
print("최종 결과:", stack)
return ''.join(stack)