성장일기
[python] 백준 18258 - 큐 2 본문
import sys
n=int(sys.stdin.readline().rstrip())
li=[]
for i in range(n):
a=sys.stdin.readline().rstrip()
if a.startswith('push'): #push 뒤의 숫자를 넣는다
li.append(int(a.split()[1]))
elif a=='pop':
if li==[]: #리스트가 비어있으면 -1 출력
print(-1)
else:
print(li[0]) #아니면 pop연산
del li[0]
elif a=='size':
print(len(li))
elif a=='empty':
if li==[]:
print(1) #비었다면 1 아니면 0
else:
print(0)
elif a=='front': #처음
if li==[]:
print(-1)
else:
print(li[0])
elif a=='back': #끝
if li==[]:
print(-1)
else:
print(li[-1])
처음 짜서 제출한 코드 → 시간초과
겹치는 if문이 많아서 그런가 싶어서 묶고 다시 작성했다
import sys
n=int(sys.stdin.readline().rstrip())
li=[]
for i in range(n):
a=sys.stdin.readline().rstrip()
if a.startswith('push'):
li.append(int(a.split()[1]))
else:
if a=='empty':
if li==[]:
print(1)
else:
print(0)
elif a=='size':
print(len(li))
else:
if li==[]: #공통부분 묶기
print(-1)
else:
if a=='pop':
print(li[0])
del li[0]
elif a=='front':
print(li[0])
elif a=='back':
print(li[-1])
하지만 여전히 시간초과였다 😥
리스트가 아니라 다른 자료형을 쓰면 괜찮을까 싶어서 다시 시도해보았다.
import sys
from collections import deque
q=deque()
n=int(sys.stdin.readline().rstrip())
for i in range(n):
a=sys.stdin.readline().rstrip()
if a.startswith('push'):
q.append(int(a.split()[1]))
else:
if a=='empty':
if len(q)==0:
print(1)
else:
print(0)
elif a=='size':
print(len(q))
else:
if len(q)==0:
print(-1)
else:
if a=='pop':
print(q[0])
del q[0]
elif a=='front':
print(q[0])
elif a=='back':
print(q[-1])
통과🎉🎉🎉
데크를 썼다
데크는 양끝의 append, pop이 빠른 자료구조다.
아직까지는 코드의 효율성에 대해 제대로 인지하지 못하고 있는것 같다
공부를 열심히해야지 화이팅
'알고리즘 문제' 카테고리의 다른 글
[python] 백준 1927 - 최소 힙 (0) | 2021.12.23 |
---|---|
백준 11279 - 최대 힙 (0) | 2021.12.23 |
[python] 백준 10773 - 제로 (0) | 2021.12.23 |
[python] 백준 10828 - 스택 (0) | 2021.12.23 |
😶첫 시작 (0) | 2021.12.23 |