코드
from collections import deque
n = int(input())
students = deque([list(input().split()) for _ in range(n)])
while len(students) > 1:
init, num = students.popleft()
for _ in range(int(num)-1):
students.append(students.popleft())
students.popleft()
print(students[0][0])
배열의 양쪽에서 입출력이 가능한 큐를 사용해서 문제를 풀면 된다.
파이썬에서는 deque 대신 그냥 리스트를 사용해도 할 수 있지만, 리스트의 가장 앞 원소를 pop하는 것은 O(n)의 시간복잡도를 가지는데, deque는 O(1)이므로 deque를 사용하는 것이 빠르다. 이는 deque가 double-linked list로 구현되어 있기 때문이다.
'문제풀이 > 자료구조' 카테고리의 다른 글
[Python/파이썬] 백준 1269번 대칭 차집합 (0) | 2024.05.08 |
---|---|
[Python/파이썬] 백준 1021번 회전하는 큐 (1) | 2024.05.01 |
[Python/파이썬] 백준 10815번 숫자 카드 (0) | 2024.03.11 |
[Python/파이썬] 백준 9536번 여우는 어떻게 울지? (0) | 2024.03.06 |
[Python/파이썬] 백준 12789번 도키도키 간식드리미 (0) | 2024.03.05 |