728x90
📌 문제
https://www.acmicpc.net/problem/18258
📌 문제 접근 방법
- 다른 사람의 정답 코드를 보지 않으려고 온갖 시도를 다 해봤다!!!
- append가 문제일까 싶어서 que를 리스트가 아닌 문자열로도 받아보고,
- pop 대신 슬라이싱을 사용해보고 등등
- 파이썬 함수의 시간 복잡도를 찾아보면서 정말 온갖 시도를 해보다가 안되길래 찾아봤더니 이건 결국 deque를 사용해서 풀어야하는 것..!
- 근데 좀 더 찾아보니 deque 없이도 풀이한 문제가 있길래 따라해봤더니 이것도 성공!
📌 코드
- deque 사용
import sys
from collections import deque
N = int(sys.stdin.readline())
que = deque([])
for _ in range(N) :
input = sys.stdin.readline()
command = input.split()
if command[0] == 'push' :
que.append(command[1])
elif command[0] == 'pop' :
if que :
print(que.popleft())
else :
print(-1)
elif command[0] == 'size' :
print(len(que))
elif command[0] == 'empty' :
if que :
print(0)
else :
print(1)
elif command[0] == 'front' :
if que :
print(que[0])
else :
print(-1)
elif command[0] == 'back' :
if que :
print(que[-1])
else :
print(-1)
- deque 사용안하고 풀기
import sys
N = int(sys.stdin.readline())
que = []
cnt = 0
for _ in range(N) :
input = sys.stdin.readline()
command = input.split()
if command[0] == 'push' :
que.append(command[1])
elif command[0] == 'pop' :
if len(que) > cnt :
print(que[cnt])
cnt += 1
else :
print(-1)
elif command[0] == 'size' :
print(len(que)-cnt)
elif command[0] == 'empty' :
if len(que) > cnt :
print(0)
else :
print(1)
elif command[0] == 'front' :
if len(que) > cnt :
print(que[cnt])
else :
print(-1)
elif command[0] == 'back' :
if len(que) > cnt :
print(que[-1])
else :
print(-1)
728x90
'ALGORITHM > BAEKJOON' 카테고리의 다른 글
[BOJ/Python] 17413. 단어 뒤집기 2 (0) | 2021.08.16 |
---|---|
[BOJ/Python] 1120. 문자열 (0) | 2021.08.16 |
[BOJ/Python] 4949. 균형잡힌 세상 (0) | 2021.08.09 |
[BOJ/Python] 10828. 스택 (0) | 2021.08.09 |
[BOJ/Python] 10818. 최소, 최대 (0) | 2021.07.27 |
댓글