본문 바로가기
백준

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

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

 

 

10845번: 큐

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

www.acmicpc.net

 

1. 문제 설명

2. 풀이과정

  1. sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys
  2. popleft() 함수를 사용하기 위해 deque을 생성하는데 deque 생성하기 위해 deque 모듈을 불러온다. from collections import deque
  3. 명령의 수를 입력받는다. N = int(sys.stdin.readline())
  4. 큐를 생성한다. queue = deque()
  5. 명령의 수만큼 반복하며 for _ in range(N)
  6. 명령을 입력받고 리스트로 저장한다. temp = list(sys.stdin.readline())
  7. 만약 입력받은 명령의 명령어가 push이면, if (temp[0] == 'push')
  8. 큐에 명령어 값을 추가한다. queue.append(int(temp[1]))
  9. push 명령어가 아니고 pop 명령어이면 elif (temp[0] == 'pop')
  10. 큐가 공백이라 원소를 제거할 수 없을 경우 -1을 출력한다. if (len(queue) == 0): print(-1)
  11. 큐가 공백이 아닐 경우 큐의 제일 앞 원소를 삭제하고 출력한다. else: print(popleft())
  12. pop 명령어도 아니고 size 명령어이면 elif (temp[0] == 'size')
  13. 큐의 원소 개수를 출력한다. print(len(queue))
  14. size 명령어도 아니고 empty 명령어이면 elif (temp[0] == 'empty')
  15. 큐가 공백이면 1을 출력하고 if (len(queue) == 0): print(1)
  16. 큐가 공백이 아니면 0을 출력한다. else: print(0)
  17. empty 명령어도 아니고 front 명령어이면 elif (temp[0] == 'front')
  18. 큐가 공백일 경우 -1을 출력하고 if (len(queue) == 0): print(-1)
  19. 큐가 공백이 아닐 경우 큐의 제일 앞 원소를 출력한다. else: print(queue[0])
  20. front 명령어도 아니면 (back 명령어) else
  21. 큐가 공백일 경우 -1을 출력하고 if (len(queue) == 0): print(-1)
  22. 큐가 공백이 아닐 경우 큐의 제일 뒤 원소를 출력한다. else: print(queue[-1])
반응형

3. 소스코드

import sys
from collections import deque

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

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

    if (temp[0] == 'push'):
        queue.append(int(temp[1]))
            
    elif (temp[0] == 'pop'):
        if (len(queue) == 0):
            print(-1)
        else:
            print(queue.popleft())

    elif (temp[0] == 'size'):
        print(len(queue))

    elif (temp[0] == 'empty'):
        if (len(queue) == 0):
            print(1)
        else:
            print(0)
            
    elif (temp[0] == 'front'):
        if (len(queue) == 0):
            print(-1)
        else:
            print(queue[0])

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