본문 바로가기

BOJ/Python

[BOJ] 18258. 큐2

*pypy3으로 제출해야 통과한다. (진짜 아슬아슬하게 시간 안에 들은 것 같다..)

*파이썬 유저가 아니라서 더 이상 시간을 줄일 방법이 안 떠오른다. 

*input() 이 아니라 sys.stdin.readline 을 써야 한다. 

*c++에 scanf / java 에 bufferedReader 같이 입출력을 빠르게 해 주는 라이브러리 인 것 같다. 

*리스트를 큐로 구현했는데, pop(), index() 로 요소를 찾는 것보다는 size, idx 를 이용해서 투 포인터 같이 사용하는 게 더 빠르다. 

 

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
31
32
33
34
35
36
37
38
import sys
 
read = sys.stdin.readline
 
 
queue = []
idx = 0
size = 0
for _ in range(int(read())):
    order = read().rstrip("\n")
    try: order, value = order.split()
    except:pass
    if (order == "push"):
        queue.append(value)
        size+=1
    elif (order == "front"):
        if (size == idx):
            print(-1)
        else:
            print(queue[idx])
    elif (order == "back"):
        if (size == idx) :
            print(-1)
        else :
            print(queue[size-1])
    elif(order == "size"):
        print(size - idx)
    elif (order == "empty"):
        if (size == idx):
            print(1)
        else:
            print(0)
    elif (order == "pop"):
        if (size == idx) :
            print(-1)
        else:
            print(queue[idx])
            idx+=1

'BOJ > Python' 카테고리의 다른 글