[Silver IV] 스택 2 - 28278

김지민·2024년 9월 13일
0

CodingTest

목록 보기
2/3

백준 28278 Github Repo

import sys

def stack_method(command, X=None): #X=None -> 매개변수의 기본 값 설정
    # 스택 초기화 - 전역변수로 선언하여 모든 명령에서 접근할 수 있도록 함
    global stack
    if command == 1:
        stack.append(X)
    elif command == 2:
        if len(stack) == 0:
            print(-1)
        else:
            print(stack.pop())
    elif command == 3:
        print(len(stack))
    elif command == 4:
        if len(stack) == 0:
            print(1)
        else:
            print(0)
    elif command == 5:
        if len(stack) != 0:
            print(stack[-1])
        else:
            print(-1)

# 스택 초기화
stack = []

# 첫째 줄에 명령의 수 N을 입력받습니다.
N = int(sys.stdin.readline().strip())

# N개의 명령을 처리합니다.
for _ in range(N):
    command = list(map(int, sys.stdin.readline().strip().split()))

    if command[0] == 1:  # 삽입 명령인 경우
        stack_method(command[0], command[1])
    else:  # 나머지 명령은 하나의 인자만 필요
        stack_method(command[0])

어제 문제를 풀면서 파이썬에서는 스택의 구현을 리스트로 처리한다는 것을 알고 스택 구현하는 문제를 풀게되었다.

스택의 push = 리스트의 append 메서드
스택의 pop = 리스트의 pop 메서드
--> pop 메서드는 리스트의 마지막 요소를 삭제하고, 그 삭제된 요소를 반환하는 메서드이다. 기본적으로 리스트의 마지막 요소를 제거하지만, 인덱스를 지정하면 해당 인덱스의 요소를 삭제할 수도 있다.


스택 관련 메서드

append(x)

설명: 스택의 맨 위에 요소 x를 추가합니다.
예시:

stack = []
stack.append(1)
stack.append(2)
print(stack)  # 출력: [1, 2]

pop([i])

설명: 스택의 맨 위 요소를 제거하고 그 값을 반환합니다. 인덱스를 지정하지 않으면 마지막 요소를 제거합니다.
예시:

stack = [1, 2, 3]
top_element = stack.pop()  # 3을 제거하고 반환
print(top_element)  # 출력: 3
print(stack)        # 출력: [1, 2]

[-1] 인덱싱

설명: 스택의 맨 위 요소를 반환합니다. 삭제하지 않습니다.
예시:

stack = [1, 2, 3]
top_element = stack[-1]  # 3을 반환
print(top_element)  # 출력: 3

len(stack)

설명: 스택의 현재 요소 개수를 반환합니다.
예시:

stack = [1, 2, 3]
print(len(stack))  # 출력: 3

clear()

설명: 스택의 모든 요소를 제거합니다.
예시:

stack = [1, 2, 3]
stack.clear()
print(stack)  # 출력: []

extend(iterable)

설명: 다른 iterable(리스트, 튜플 등)의 요소를 스택에 추가합니다.
예시:

stack = [1]
stack.extend([2, 3])
print(stack)  # 출력: [1, 2, 3]

insert(i, x)

설명: 인덱스 i 위치에 요소 x를 추가합니다. 스택의 동작과는 다소 다르지만, 원하는 위치에 삽입할 수 있습니다.
예시:

stack = [1, 2]
stack.insert(0, 0)  # 인덱스 0에 0을 추가
print(stack)  # 출력: [0, 1, 2]
profile
백엔드 개발자를 준비하는 삐약이 대학생에서 .. 취준생🐣

0개의 댓글