IT/알고리즘

[백준] 스택 10828.python

Terriermon 2021. 2. 3. 17:51

 문제

- Python으로 Stack 짜기

- Stack의 명령어를 입력받은 대로 출력하면 된다.

 

 

 해설 및 코드

- 시간 초과가 제일 큰 벽이었다.

 

- 이전 input 대신 버퍼를 읽는 sys를 선언하여, 시간 초과를 잡을 수 있었다.

 

- Python에서 stack은 List로 대신할 수 있다.

# 시간 초과를 해결하기 위한 sys 선언
import sys
N = int(sys.stdin.readline().rstrip())

# python은 list로 stack을 흉내 낼 수 있음
stack = []

# 0부터 N-1까지 반복
for _ in range(N):
    # push의 경우는 두 개의 명령어가 필요하므로 list 형식으로 받는다.
    cmd = list(sys.stdin.readline().rstrip().split())

    # python은 switch문이 존재하지 않는다.

    # 헷갈렸던 것, if 문에 아무리 한줄이라도 python은 : 을 붙여줘야 한다.
    if cmd[0] == "push":
        stack.append(cmd[1])

    elif cmd[0] == "pop":
        if len(stack) != 0:
            print(stack.pop())
        else:
            print(-1)
    
    elif cmd[0] == "size":
            print(len(stack))
    elif cmd[0] == "empty":
    # 0 if stack else 1
    # 이렇게 써도 동일하게 작동한다
            if len(stack) == 0:
                print(1)
            else:
                print(0)

    elif cmd[0] == "top":

    # stack[-1] if stack else -1
        if len(stack) != 0:
            # 리스트의 맨 뒤의 숫자 가져올 때 -1을 해주면 됨
            print(stack[-1])
        else:
            print(-1)


# list에 아무런 원소가 없으면 not list, if list 등으로 존재 여부를 확인할 수 있다.

Python에서 Stack 이용하기

- stack은 list로 선언

- push = list.append()

- pop = list.pop()

- isEmpty = 0 if list else 1

- size = len(list)

- top = list[-1]

 

 

 

Python 문법 정리

- System에서 입력 받아오기

- input() 보다 빠르다.

N = sys.stdin.readline().rstrip()

 

- list 선언

list = []

 

- list 추가

list.append("추가")

 

- list 길이

len(list)

 

- 맨 뒤의 list 값 가져오기

list[-1]

 

- 간단한 if else 문장 만들기

"if에 맞으면 나오는 문구" if "조건" else "조건에 충족하지 않으면 나오는 문구"

 

- Python은 switch 문이 존재하지 않는다.

 

'IT > 알고리즘' 카테고리의 다른 글

[백준] 보물 1026.python  (0) 2021.02.09
[백준] 에디터 1406.python  (0) 2021.02.07
[백준] 덱 10866.python  (0) 2021.02.07
[백준] 큐 10845.python  (0) 2021.02.04
[백준] 수찾기 1920.python  (0) 2021.01.28