본문 바로가기
백준

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

by 우당탕탕 개발자 2023. 7. 2.
728x90
반응형

 

 

10828번: 스택

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

www.acmicpc.net

 

1. 문제 설명

2. 풀이과정

  1. sys.stdin.readline() 함수를 사용하기 위해 sys 라이브러리를 불러온다. import sys
  2. 전체 명령어 수를 입력받는다. N = int(sys.stdin.readline().rstrip())
  3. 명령어 수행의 결과를 나타내줄 리스트를 생성한다. li = list()
  4. 전체 명령어 수만큼 반복한다. for _ in range(N)
  5. 명령어를 입력받는다. Str = sys.stdin.readline().rstrip()
  6. 만약 입력받은 문자열에 공백이 있다면 if (' ' in Str)
  7. 명령어 이외에도 값이 있다는 의미이므로 단어와 값으로 구분해 준다. word, num = map(str, Str.split())
  8. 반면에 명령어만 존재한다면 else
  9. 명령어만 단어로 저장해 준다. word = Str
  10. 만약 단어가 push일 경우 값을 정수형으로 바꿔 리스트에 추가해 준다. if (word == 'push'): li.append(int(num))
  11. 만약 단어가 pop일 경우 elif (word == 'pop')
  12. 리스트가 공백이면 제거할 원소가 없으므로 -1을 출력한다. if (len(li) == 0): print(-1)
  13. 리스트가 공백이 아니라면 리스트의 마지막 원소를 하나 제거하고 그 값을 출력한다. else: print(li.pop())
  14. 만약 단어가 size일 경우 리스트의 원소 개수를 출력한다. elif (word == 'size'): print(len(li))
  15. 만약 단어가 empty일 경우 elif (word == 'empty')
  16. 리스트가 공백이면 1을 출력한다. if (len(li) == 0): print(1)
  17. 리스트가 공백이 아니라면 0을 출력한다. else: print(0)
  18. 만약 단어가 top일 경우 elif (word == 'top')
  19. 리스트가 공백이면 -1을 출력한다. if (len(li) == 0): print(-1)
  20. 리스트가 공백이 아니라면 리스트의 제일 마지막 원소를 출력한다. else: print(li[len(li) - 1])
반응형

3. 소스코드

import sys

N = int(sys.stdin.readline().rstrip())
li = list()

for _ in range(N):
    Str = sys.stdin.readline().rstrip()

    if (' ' in Str):
        word, num = map(str, Str.split())
    else:
        word = Str
        
    if (word == 'push'):
        li.append(int(num))
        
    elif (word == 'pop'):
        if (len(li) == 0):
            print(-1)
        else:
            print(li.pop())
                    
    elif (word == 'size'):
        print(len(li))

    elif (word == 'empty'):
        if (len(li) == 0):
            print(1)
        else:
            print(0)
               
    elif (word == 'top'):
        if (len(li) == 0):
            print(-1)
        else:
            print(li[len(li) - 1])
728x90
반응형