본문 바로가기
백준

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

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

 

 

28279번: 덱 2

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

www.acmicpc.net

 

1. 문제 설명

2. 풀이과정

  1. sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys
  2. 덱을 deque 자료구조로 만들기 위해 deque 함수를 불러온다. from collections import deque
  3. 명령어의 개수를 입력받는다. N = int(sys.stdin.readline())
  4. 덱을 생성한다. d = deque()
  5. 명령어 개수만큼 반복하며 for _ in range(N)
  6. 하나 이상의 명령어를 정수형으로 입력받아 리스트로 저장한다. op = list(map(int, sys.stdin.readline().split()))
  7. 만약 첫 번째 명령어가 1이면 두 번째 명령어인 데이터를 덱의 앞에 추가한다. if (op[0] == 1): d.appendleft(op[1])
  8. 만약 첫 번째 명령어가 2이면 두 번째 명령어인 데이터를 덱의 뒤에 추가한다. elif (op[0] == 2): d.append(op[1])
  9. 만약 첫 번째 명령어가 3이면 elif (op[0] == 3)
  10. 덱이 비어있지 않을 경우, 덱의 맨 앞의 정수를 빼서 출력하고 if (d): print(d.popleft())
  11. 덱이 비어있을 경우, -1을 출력한다. else: print(-1)
  12. 만약 첫 번째 명령어가 4이면 elif (op[0] == 4)
  13. 덱이 비어있지 않을 경우, 덱의 맨 뒤의 정수를 빼서 출력하고 if (d): print(d.pop())
  14. 덱이 비어있을 경우, -1을 출력한다. else: print(-1)
  15. 만약 첫 번째 명령어가 5이면 덱에 들어있는 정수의 개수를 출력한다. elif (op[0] == 5): print(len(d))
  16. 만약 첫 번째 명령어가 6이면 elif (op[0] == 6)
  17. 덱이 비어있지 않을 경우, 0을 출력하고 if (d): print(0)
  18. 덱이 비어있을 경우, 1을 출력한다. else: print(1)
  19. 만약 첫 번째 명령어가 7이면 elif (op[0] == 7)
  20. 덱이 비어있지 않을 경우, 덱의 맨 앞의 정수를 출력하고 if (d): print(d[0])
  21. 덱이 비어있는 경우, -1을 출력한다. else: print(-1)
  22. 만약 첫 번째 명령어가 8이면 elif (op[0] == 8)
  23. 덱이 비어있지 않을 경우, 덱의 맨 뒤의 정수를 출력하고 if (d): print(d[-1])
  24. 덱이 비어있을 경우, -1을 출력한다. else: print(-1)
반응형

3. 소스코드

import sys
from collections import deque

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

d = deque()
for _ in range(N):
    op = list(map(int, sys.stdin.readline().split()))
    
    if (op[0] == 1):
        d.appendleft(op[1])
    elif (op[0] == 2):
        d.append(op[1])
    elif (op[0] == 3):
        if (d):
            print(d.popleft())
        else:
            print(-1)
    elif (op[0] == 4):
        if (d):
            print(d.pop())
        else:
            print(-1)
    elif (op[0] == 5):
        print(len(d))
    elif (op[0] == 6):
        if (d):
            print(0)
        else:
            print(1)
    elif (op[0] == 7):
        if (d):
            print(d[0])
        else:
            print(-1)
    elif (op[0] == 8):
        if (d):
            print(d[-1])
        else:
            print(-1)
728x90
반응형