본문 바로가기

알고리즘_파이썬

백준 10866 덱

 

https://www.acmicpc.net/problem/10866

 

10866번: 덱

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

www.acmicpc.net

알고리즘에 대한 설명은 문제 자체에 있기 때문에 굳이 구현 방법을 설명하지 않아도 될 거 같다.

다만 구현에 있어서 걸림돌이 되었던 몇가지 주의점만 짚고 넘어가고자 한다. 우선, sys.stdin.readline()이 일반적으로 사용하는 input()보다 버퍼에서 저장하고 처리하는 속도가 빠르기에 반복문에서 입력을 할 경우 사용하는 것이 더 좋다. 이때, 또 주의할 점은 stdin은 GoogleColab에서 지원하지 않는다는 것!! 때문에 정답을 확인하고자 하면 input()을 사용하다가 나중에 백준에 제출할때만 입력부분을 바꾸거나 아예 다른 python 컴파일 프로그램을 사용하자

 

문제 풀이

import sys
stack = []
N = int(input())

for _ in range(N):
  cmd = sys.stdin.readline().split()
  if cmd[0] == 'push_front':
    stack.insert(0,cmd[1])

  elif cmd[0] == 'push_back':
    stack.append(cmd[1])

  elif cmd[0] == 'pop_front':
    if len(stack) == 0:
      print(-1)
    else:
      print(stack.pop(0))

  elif cmd[0] == 'pop_back':
    if len(stack) == 0:
      print(-1)
    else:
      print(stack.pop())

  elif cmd[0] == 'size':
    print(len(stack))

  elif cmd[0] == 'empty':
    if len(stack) == 0:
      print(1)
    else:
      print(0)

  elif cmd[0] == 'front':
    if len(stack) == 0:
      print(-1)
    else:
      print(stack[0])

  elif cmd[0] == 'back':
    if len(stack) == 0:
      print(-1)
    else:
      print(stack[-1])

 

 

'알고리즘_파이썬' 카테고리의 다른 글

백준 1260 DFS와 BFS  (0) 2024.01.19
백준 10816 숫자카드 2  (0) 2024.01.19
백준 9012 괄호 VPS  (0) 2024.01.13
백준 1181 단어정렬  (1) 2024.01.13
백준 1110 더하기 사이클  (0) 2024.01.13