본문 바로가기
Algorithm/Python

Stack

by Code Art 2024. 4. 3.

후입선출 구조 (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)

 

 

 

'Algorithm > Python' 카테고리의 다른 글

Hash table = dictionary (in python)  (0) 2024.04.04
반복문  (0) 2024.04.03
List  (2) 2024.04.03
String  (0) 2024.04.03
IT 관련 회사 코딩테스트를 준비하기 위한, 공부 계획  (1) 2024.04.03