[10828] 스택

백준 문제 풀이

문제 링크

10828번: 스택

  • 해설

      자료구조 시간에 스택에 대한 내용을 배웠을 것이다.
      각각 명령어에 따라서 조건에 맞게 프린트하면 된다.
        
      push -> 스택에 추가 (== stack.append)
      top -> 스택 가장 위에 있는 것을 출력 리스트[0]
      pop -> 스택 가장 위에 있는 것을 빼온다. (stack.pop)
      size -> stack의 사이즈
      empty -> stack의 길이가 0 인지 판단.
        
      for i in range(N):
          strings = list(map(str, sys.stdin.readline().split()))
        
      range(N)  통해서    명령어를 받는다.
      해당 strings가 입력 받은 한줄이고, 공백에 따라서 분리된다.
        
      ex) push 3 
      이라고 입력하면
      strings[0] = 'push'
      strings[1] = 3
       들어간다.
        
      각각 명령어는 strings[0] 반드시 있고,  값에 따라서 기능이
      달라지기 떄문에 해당 값을 분기처리하면 된다.
        
      case 문을 사용할 , if 문을 사용할지 취양에 맞게 사용하면 된다.
    
  • 답안

      import sys
        
      if __name__ == '__main__':
          N = int(sys.stdin.readline())
          stack = []
          for i in range(N):
              strings = list(map(str, sys.stdin.readline().split()))
              if strings[0] == 'push':
                  stack.append(int(strings[1]))
              elif strings[0] == 'top':
                  if len(stack) == 0:
                      print(-1)
                  else:
                      print(stack[-1])
              elif strings[0] == 'pop':
                  if len(stack) == 0:
                      print(-1)
                  else:
                      print(stack.pop())
              elif strings[0] == 'size':
                  print(len(stack))
              elif strings[0] == 'empty':
                  if len(stack) == 0:
                      print(1)
                  else:
                      print(0)