2019.02.28) 백준 큐 특집 - 2161, 1966, 2164(시간초과?) (PyPy3)

2019. 2. 28. 18:00프로그래밍(주력)/백준 문제풀이

큐는 스택이랑 반대쪽인 제일 앞만 건드릴수 있는 자료구조이다.


2161번

1
2
3
4
5
6
7
8
= [i + 1 for i in range(int(input()))]
 
while len(q) != 1:
    print(q.pop(0), end=' ')
    q.append(q.pop(0))
 
print(q[0])
 
cs

1966번

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
for i in range(int(input())):
    a, b = map(int, input().split(' '))
    # 프린터 큐
    q = [i for i in range(a)]
    # 랭킹 큐
    r = list(map(int, input().split(' ')))
 
    n = 0
    while True:
        # 랭킹이 높은놈일때
        if max(r) == r[0]:
            # 프린터 카운트 올라가고
            n += 1
            # 랭킹을 없애고
            r.pop(0)
            # 프린터가 입력값이랑 같으면 출력
            if b == q.pop(0):
                print(n)
                break
        # 랭킹이 높지 않을때
        else:
            # 둘 다 뒤로 넘김
            r.append(r.pop(0))
            q.append(q.pop(0))
 
cs

2164번(그냥 파이썬이라 시간초과인듯..?)

1
2
3
4
5
6
7
8
9
= [i + 1 for i in range(int(input()))]
 
while len(q) != 1:
    q.pop(0)
    q.append(q.pop(0))
 
print(q[0])
 
 
cs