Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- github
- Algorithm
- UE5
- 재귀
- loop
- 프로그래밍
- 문제풀이
- c++
- C#
- 기초
- DP
- python
- parameter
- 백준
- Material
- Class
- Basic
- guide
- String
- Unreal Engine 5
- Programming
- 오류
- 시작해요 언리얼 2022
- W3Schools
- 파이썬
- Unity
- Tutorial
- w3school
- dynamic
- dfs
Archives
- Today
- Total
행복한 개구리
백준 22.04.07. 18258번 - 큐 2 본문
# sys모듈을 임포트하여 출력, 입력부분에서 소요되는 시간을 줄여줍니다.
import sys
# deque를 임포트하여 deque의 기능을 사용할 예정입니다.
# deque를 사용하는 이유는 popleft메서드를 사용하기 위함인데, 이는 pop(0)과 같은 기능을 합니다.
# 하지만 시간적 측면에서 pop(0)은 pop이후에 나머지 요소들의 인덱스를 하나씩 끌어당기는 과정이 필요하므로 시간이 더 오래걸립니다.
# 따라서 popleft를 사용합니다.
from collections import deque
# 아래와 같이 input과 print를 미리 설정해줍니다. print의 매개변수는 반드시 str타입으로 형변환해줘야합니다.
input = sys.stdin.readline
print = sys.stdout.write
# queue의 기능들을 메서드로 만들었습니다.
# push를 제외한 함수들은 값을 반환하도록 하여 출력하기 편하게 해줍니다.
def push(q, n):
q.append(n)
# popleft()는 deque를 사용할 때 쓸 수 있는 함수입니다.
# q.pop(0)과 같은 기능을 합니다.
def pop(q):
if len(q) == 0:
return -1
else:
return q.popleft()
def size(q):
return len(q)
def empty(q):
if len(q) == 0:
return 1
else:
return 0
def front(q):
if len(q) == 0:
return -1
else:
return q[0]
def back(q):
if len(q) == 0:
return -1
else:
return q[-1]
# 입력된 커맨드(c)에 따라 다른 메서드를 실행해줍니다.
# 위에서 설명했듯이 print = sys.stdout.write이므로 매개변수가 반드시 str타입이어야 하며 줄바꿈이 자동이 아니므로 직접 줄바꿈해줍니다.
def command(c, q):
if c[0] == "push":
push(q, c[1])
elif c[0] == "pop":
print(str(pop(q))+"\n")
elif c[0] == "size":
print(str(size(q))+"\n")
elif c[0] == "empty":
print(str(empty(q))+"\n")
elif c[0] == "front":
print(str(front(q))+"\n")
elif c[0] == "back":
print(str(back(q))+"\n")
n = int(input())
q = deque([])
for i in range(n):
c = input().split()
command(c, q)
- 소요시간을 줄이기 위해 sys모듈을 임포트하여 입,출력관련 시간을 절약합니다.
- 그리고 deque를 사용하여 pop대신 popleft라는 메서드를 사용합니다.
- 이유는 q를 리스트로 만들어 pop(0)을 쓰면 pop한 이후에 나머지 요소들의 인덱스를 한 칸씩 당기는 과정에서 시간소요가 많이 됩니다.
- 따라서 시간이 덜 걸리는 deque의 popleft를 사용합니다.
- 이어서 queue의 기능을 하는 메서드들을 모두 만들어줍니다.
- command메서드를 만들어 입력받은 명령의 종류에 따라 다른 메서드를 실행하고 출력할 수 있도록 합니다.
'Algorithm > BaekJoon' 카테고리의 다른 글
(C++/Python) 백준 10718번 - We love kriii (0) | 2022.07.08 |
---|---|
(C++ / Python) 백준 2557번 - Hello World! (0) | 2022.06.29 |
백준 22.04.07. 17298번 - 오큰수 (0) | 2022.04.07 |
백준 22.04.02. 1874번 - 스택 수열 (0) | 2022.04.02 |
백준 22.04.02. 4949번 - 균형잡힌 세상 (0) | 2022.04.02 |