본문 바로가기
백준

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

by 우당탕탕 개발자 2023. 8. 10.
728x90
반응형

 

 

10866번: 덱

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

www.acmicpc.net

 

1. 문제 설명

2. 풀이과정

  1. sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys
  2. deque 자료구조를 구현해 보는 문제이기에 리스트 대신 deque 자료구조를 사용해 봤다. deque 자료구조를 사용하기 위해 deque 모듈을 불러온다. from collections import deque
  3. 명령의 수를 입력받는다. N = int(sys.stdin.readline())
  4. 명령의 결과를 저장할 deque을 생성한다. Deque = deque()
  5. 명령어 수만큼 반복하며 for _ in range(N)
  6. 명령어를 리스트로 입력받는다. word = list(sys.stdin.readline().split())
  7. 만약 명령어의 명령이 push_front 이면 if (word[0] == 'push_front')
  8. deque의 제일 앞에 값을 추가한다. Deque.appendleft(int(word[1]))
  9. 만약 명령어의 명령이 push_back 이면 elif (word[0] == 'push_back')
  10. deque의 제일 뒤에 값을 추가한다. Deque.append(int(word[1]))
  11. 만약 명령어의 명령이 pop_front 이면 elif (word[0] == 'pop_front')
  12. deque이 공백일 경우 -1을 출력하고 if (len(Deque) == 0): print(-1)
  13. 공백이 아닐 경우 제일 앞의 값을 출력 및 삭제한다. else: print(Deque.popleft())
  14. 만약 명령어의 명령이 pop_back 이면 elif (word[0] == 'pop_back')
  15. deque이 공백일 경우 -1을 출력하고 if (len(Deque) == 0): print(-1)
  16. 공백이 아닐 경우 제일 뒤의 값을 출력 및 삭제한다. else: print(Deque.pop())
  17. 만약 명령어의 명령이 size 이면 deque의 크기를 출력한다. elif (word[0] == 'size'): print(len(Deque))
  18. 만약 명령어의 명령이 empty 이면 elif (word[0] == 'empty')
  19. deque이 공백일 경우 1을 출력하고 if (len(Deque) == 0): print(1)
  20. 공백이 아닐 경우 0을 출력한다. else: print(0)
  21. 만약 명령어의 명령이 front 이면 elif (word[0] == 'front')
  22. deque이 공백일 경우 -1을 출력하고 if (len(Deque) == 0): print(-1)
  23. 공백이 아닐 경우 deque의 제일 앞의 값을 출력한다. else: print(Deque[0])
  24. 그 외의 명령(back)이면 else
  25. deque이 공백일 경우 -1을 출력하고 if (len(Deque) == 0): print(-1)
  26. 공백이 아닐 경우 deque의 제일 뒤의 값을 출력한다. else: print(Deque[-1])
반응형

3. 소스코드

import sys
from collections import deque

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

Deque = deque()
for _ in range(N):
    word = list(sys.stdin.readline().split())

    if (word[0] == 'push_front'):
        Deque.appendleft(int(word[1]))

    elif (word[0] == 'push_back'):
        Deque.append(int(word[1]))

    elif (word[0] == 'pop_front'):
        if (len(Deque) == 0):
            print(-1)
        else:
            print(Deque.popleft())

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

    elif (word[0] == 'size'):
        print(len(Deque))

    elif (word[0] == 'empty'):
        if (len(Deque) == 0):
            print(1)
        else:
            print(0)

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

    else:
        if (len(Deque) == 0):
            print(-1)
        else:
            print(Deque[-1])
728x90
반응형