본문 바로가기
백준

[백준] 28278번 : 스택 2 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2023. 12. 1.
728x90
반응형

 

 

28278번: 스택 2

첫째 줄에 명령의 수 N이 주어진다. (1 ≤ N ≤ 1,000,000) 둘째 줄부터 N개 줄에 명령이 하나씩 주어진다. 출력을 요구하는 명령은 하나 이상 주어진다.

www.acmicpc.net

 

1. 문제 설명

2. 풀이과정

  1. sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys
  2. 명령어의 개수를 입력받는다. N = int(sys.stdin.readline())
  3. 빈 스택을 생성한다. stack = list()
  4. 명령어 개수만큼 반복하며 for _ in range(N)
  5. 1개 이상의 명령어가 입력될 수 있으므로 명령어를 공백으로 분리해 리스트에 저장한다. op = list(map(int, sys.stdin.readline().split()))
  6. 만약 명령어가 1이면 같이 입력받은 데이터를 스택에 추가한다. if (op[0] == 1): stack.append(op[1])
  7. 만약 명령어가 2이면 elif (op[0] == 2)
  8. 스택이 비어있는지 확인하고 비어있지 않으면 if (len(stack) > 0)
  9. 제일 위의 정수를 제거해 출력한다. print(stack.pop())
  10. 반면에 스택이 비어 있으면 -1을 출력한다. else: print(-1)
  11. 만약 명령어가 3이면 스택에 들어있는 정수의 개수를 출력한다. elif (op[0] == 3): print(len(stack))
  12. 만약 명령어가 4이면 elif (op[0] == 4)
  13. 스택이 비어있으면 1을 출력하고 if (len(stack) == 0): print(1)
  14. 비어있지 않으면 0을 출력한다. else: print(0)
  15. 만약 명령어가 5이면 else
  16. 스택에 정수가 있으면 제일 위의 정수를 출력하고 if (len(stack) > 0): print(stack[-1])
  17. 스택에 정수가 없으면 -1을 출력한다. else: print(-1)
반응형

3. 소스코드

import sys

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

stack = list()
for _ in range(N):
    op = list(map(int, sys.stdin.readline().split()))
    
    if (op[0] == 1):
        stack.append(op[1])
    elif (op[0] == 2):
        if (len(stack) > 0):
            print(stack.pop())
        else:
            print(-1)
    elif (op[0] == 3):
        print(len(stack))
    elif (op[0] == 4):
        if (len(stack) == 0):
            print(1)
        else:
            print(0)
    else:
        if (len(stack) > 0):
            print(stack[-1])
        else:
            print(-1)
728x90
반응형