본문 바로가기
백준

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

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

 

 

18258번: 큐 2

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

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. 빈 큐를 생성한다. queue = deque()
  5. 명령어의 개수만큼 반복하며 for _ in range(N)
  6. 명령어를 입력받아 공백을 기준으로 분리해 리스트로 저장한다. op = list(map(str, sys.stdin.readline().split()))
  7. 만약 명령어의 첫 번째 단어가 push이면 if (op[0] == 'push')
  8. 두 번째 값을 정수형으로 큐에 추가한다. queue.append(int(op[1]))
  9. 만약 명령어의 첫 번째 단어가 pop이면 elif (op[0] == 'pop')
  10. 큐가 비어있지 않을 경우 제일 앞에 있는 정수를 제거하고 출력한다. if (queue): print(queue.popleft())
  11. 큐가 비어있을 경우 -1을 출력한다. else: print(-1)
  12. 만약 명령어의 첫 번째 단어가 size이면 큐의 원소 개수를 출력한다. elif (op[0] == 'size'): print(len(queue))
  13. 만약 명령어의 첫 번째 단어가 empty이면 elif (op[0] == 'empty')
  14. 큐가 비어있지 않을 경우 0을 출력하고 if (queue): print(0)
  15. 큐가 비어있을 경우 1을 출력한다. else: print(1)
  16. 만약 명령어의 첫 번째 단어가 front이면 elif (op[0] == 'front')
  17. 큐가 비어있지 않을 경우 큐의 제일 앞에 있는 정수를 출력한다. if (queue): print(queue[0])
  18. 큐가 비어있으면 -1을 출력한다. else: print(-1)
  19. 만약 명령어의 첫 번째 단어가 위 명령어 이외의 단어이면(back이면) else
  20. 큐가 비어있지 않을 경우 큐의 제일 뒤에 있는 정수를 출력한다. if (queue): print(queue[-1])
  21. 큐가 비어있을 경우 -1을 출력한다. else: print(-1)
반응형

3. 소스코드

import sys
from collections import deque

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

queue = deque()
for _ in range(N):
    op = list(map(str, sys.stdin.readline().split()))
    
    if (op[0] == 'push'):
        queue.append(int(op[1]))
    elif (op[0] == 'pop'):
        if (queue):
            print(queue.popleft())
        else:
            print(-1)
    elif (op[0] == 'size'):
        print(len(queue))
    elif (op[0] == 'empty'):
        if (queue):
            print(0)
        else:
            print(1)
    elif (op[0] == 'front'):
        if (queue):
            print(queue[0])
        else:
            print(-1)
    else:
        if (queue):
            print(queue[-1])
        else:
            print(-1)
728x90
반응형